~Galaxy
In the beginning there was nothing.... and even that exploded...
Ik heb TMR1 er van kunnen overtuigen dattie de poortpins los moet laten.
Prog is nog in ontwikkeling (ik moet overdag ook nog werken), maar schema wordt niet gewijzigd.
Dat kan ik dus vrijgeven.
R1,R2,R3 zijn pullups. Elke waarde tussen 1K en 10K is goed.
Kijk maar wat je in je bakkies hebt.
Prog geef ik van het weekend vrij. Of dat begin- of einde weekend wordt, kan ik op dit moment nog niet zeggen.
Maar je hebt alvast wat om te knutselen...
edit: ik zie dat er lijnen wegvallen bij de jpg-compressie.
Zal de zaken wat uitvergroten. Krijg ik waarschijnlijk om m'n donder wegens te groot. Het zij zo..
Edit 2 : Lukt niet. SW gaat naar RB7, C1/C2 gaat naar GND, D4/LCD gaat naar RB0, D7/LCD gaat naar RB3.
Wat is de bedoeling van de transistor aan de ingangskant ?
Want die schakeling werkt niet al te best, alleen als je er een blok van een paar volt instuurt, en op lage frequenties van een paar Hertz doet het ook weinig.
Ik neem aan dat de TS ook de frequentie van een sinus van bijv. 100 mV wil bepalen.
Technojunk
Printje geëtst hebben? mail me! | Even the invisible must be perfect | Ook een Meetsnoeren ophangrekje
Galaxy:
Bedankt!
Waarvoor zijn de schakelaars?
En wat is duty-cycle precies?
En waarom blijfen er eigenlijk 2 nullen voor de 1000Hz staan?
En kan ik er nu Blokgolf, sinus, en driehoek met 10Vtt ingooien? vanaf 700mV dan..
Jowi:
Ja, ik wil ook graag de frequentie van een sinus weten 
[Bericht gewijzigd door Technojunk op (17%)]
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
Een ingangstrap die redelijk gevoelig is, enigzins beschermd is tegen misbruik en toch simpel is, kan er zo uitzien:
Die heeft genoeg aan 100mV, is bestand tegen 50V, maar je kan er best geen netspanning op aansluiten... 
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
Die zal vast beter presteren, maar kost dan weer meer onderdelen.
Het ideaal is een ingangstrap, waarbij je de gevoeligheid kan instellen. Maar dat resulteert uiteraard in nog meer onderdelen...
Het probleem is dat elk schema dat hier voorbij komt voor de ingangstrap NIET geschikt is voor frequenties van 10 tot 100 Hz die de TS ook wou hebben.
Alle schema's die ik zie zijn voor van een paar honderd Hertz tot in de Megahertzen.
Je kan voor een 100u ingangs elko, maar geen idee wat dat doet boven de 100 kHz.
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
Voor lage frequenties kan het ook zonder ingangs-C. Dat kost je enkel een schakelaar om de C te overbruggen... 
rbeckers
Overleden
100uF is laagfrekwent ook niet zo goed en hoogfrekwent slecht.
Je kunt het schema met een FET gemakkelijk aanpassen.
Ingangs C (C5) vergroten naar 2uF, ingangsweerstand vergroten naar 4,7M (R6) en uitgangs C (C6) vergroten naar 4,7uF.
Technojunk
Printje geëtst hebben? mail me! | Even the invisible must be perfect | Ook een Meetsnoeren ophangrekje
Ik wacht nog even op antwoordt van galaxy..
Kan ik dan dat schema er voor zetten van pros i.p.v. de versterker van galazy?
Of moet ik dan van jowi volgen of gaat dit zo goed met de sinus, bloekgolf en driehoek? Vanaf ongeveer 100mV
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
IMHO kan je best 2 ingangen voorzien: een TTL-ingang, die gelijkstroomgekoppeld is en een analoge ingang met wisselstroomkoppeling. Met een schakelaar kies je de ingang die best geschikt is voor de meting die je wil uitvoeren.
De TTL-ingang kan je dan gebruiken voor alle digitale signalen. Zorg voor een goede ingangsbeveiliging, dan kan je ook aan schakelingen meten die bv. op 15V draaien. Meetbereik = 1Hz (en minder, als je de gate-tijd v/d PIC verhoogt) tot het max. dat de PIC kan verwerken. De ingangsgevoeligheid hangt af van de opzet. Met een opamp als de CA3130 of een snelle comparator kan je uiteraard veel meer bereiken dan met een simpele transistor.
't Hangt er van af, hoeveel moeite, tijd en geld je wil investeren.
De analoge ingang is eerder geschikt voor kleine wisselspanningen. Een potmeter, waarmee je de gevoeligheid kan instellen, is altijd handig. Lees ook dit topic even door.
Technojunk
Printje geëtst hebben? mail me! | Even the invisible must be perfect | Ook een Meetsnoeren ophangrekje
Oke,
Ik wacht toch even af op galaxy, hij zal het ook wel weten op programeergebied enz. Ik moet dus iig een driehoek een sinus en een blokgolf de verquentie vanaf zeker 100mV kunnen aflezen!
Galaxy, kan dat zo? zo nee hoe kan ik dat wel doen? en waarvoor is de duty cycle?
gelijk wil ik zo'n maximaal 10~11Vtt en
En wissel? 1Vtt maximaal
[Bericht gewijzigd door Technojunk op (11%)]
Wat lees ik nu, wil je de frequentie van gelijkspanning meten? 
@Duty cycle: Geeft bij een blokgolf de verhouding tussen de twee situaties aan. Bijv:
25%:
-|
|___
50%:
--|
|__
75%:
---|
|_
Technojunk
Printje geëtst hebben? mail me! | Even the invisible must be perfect | Ook een Meetsnoeren ophangrekje
Oke,
Maar wat is 100%? De volle uitslag van je divisies?
En wat is er zo gek aan gelijkspanning? Op de functiegen. zit een DC output dus ja..
Op 11 januari 2008 16:14:51 schreef Technojunk:
En wat is er zo gek aan gelijkspanning? Op de functiegen. zit een DC output dus ja..
Ja, en daar is de frequentie gewoonlijk 0 Hz van.
Op 11 januari 2008 16:14:51 schreef Technojunk:
Oke,
Maar wat is 100%? De volle uitslag van je divisies?
0% en 100% zijn geen blokgolven meer, teken het zelf eens uit .
En wat is er zo gek aan gelijkspanning? Op de functiegen. zit een DC output dus ja..
Nee, een AC signaal gesuperponeerd op DC.
~Galaxy
In the beginning there was nothing.... and even that exploded...
Op 10 januari 2008 20:53:50 schreef Technojunk:
Galaxy:
Bedankt!
Waarvoor zijn de schakelaars?
En wat is duty-cycle precies?
En waarom blijfen er eigenlijk 2 nullen voor de 1000Hz staan?
De schakelaar is om te kunnen omschakelen tussen je klokkie en je counter.
De drukknoppen zitten er om je klokkie gelijk te kunnen zetten.
Die nullen zitten er meestal op een hardware counter ook.
Maar als het je stoort, wil ik ze wel blanken hoor.
Voor wat het ingangstrapje betreft: Ik denk dat je het beste het trapje van Pros over kan nemen.
Ook het idee van het overbruggen van de cap met een schakelaar lijkt me goed. Op die manier kan je alle frequenties gewoon meten.
Duty-cycle: Stel je hebt een blokgolf die 1 ms hoog is, en 4 ms laag, dan heb je een duty-cycle van 20%.
Technojunk
Printje geëtst hebben? mail me! | Even the invisible must be perfect | Ook een Meetsnoeren ophangrekje
Op 11 januari 2008 17:03:07 schreef ~Galaxy:
[...]De schakelaar is om te kunnen omschakelen tussen je klokkie en je counter.
De drukknoppen zitten er om je klokkie gelijk te kunnen zetten.Die nullen zitten er meestal op een hardware counter ook.
Maar als het je stoort, wil ik ze wel blanken hoor.Voor wat het ingangstrapje betreft: Ik denk dat je het beste het trapje van Pros over kan nemen.
Ook het idee van het overbruggen van de cap met een schakelaar lijkt me goed. Op die manier kan je alle frequenties gewoon meten.Duty-cycle: Stel je hebt een blokgolf die 1 ms hoog is, en 4 ms laag, dan heb je een duty-cycle van 20%.
Oke, schakelaars zijn duidelijk.
Als je de nullen wilt blanken graag, soms lijkt het dan net of er een komma mast 
Maar als ik de C dus overbrug kan ik dus in de lage frequentie meten, zonder overbrugging in de hoge dus..
Maar wat is laag? 1Hz tot 1KHz?
En kan ik zo ook blokgolf,sinus en driehoek meten vanaf 100mV?
En de dutcy cycle, Hoe kom jij dan aan die 20%?
~Galaxy
In the beginning there was nothing.... and even that exploded...
Maar wat is laag? 1Hz tot 1KHz?
Even experimenteel bepalen, maar iets in die orde van grootte ja.
En kan ik zo ook blokgolf,sinus en driehoek meten vanaf 100mV?
Ja.
En de dutcy cycle, Hoe kom jij dan aan die 20%?
De periode duurt totaal 5 ms. Duty-cycle = hoog / periode
= 1 / 5 = 0,2 = 20%
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
En de dutcy cycle, Hoe kom jij dan aan die 20%?
"puls/pauze-verhouding" is een mooie Nederlandse uitdrukking, die precies zegt waar het om gaat.
Technojunk
Printje geëtst hebben? mail me! | Even the invisible must be perfect | Ook een Meetsnoeren ophangrekje
vanzwam
Ik heb geen schrik iets nieuw te beginnen omdat de Ark is gebouwd door amateurs, de Titanic door professionals
~Galaxy
In the beginning there was nothing.... and even that exploded...
Mission completed..
Er zijn nog wat kleine wijzigingen in het schema.
Ik bleef ruzie houden met timer1 in combinatie met RB.6 als I/O.
Daarom gaat het ingangssignaal nu ook naar RA.5
Tikje onelegant, maar ik zag geen andere mogelijkheid meer.
Het ingangstrapje is weggelaten. Er zijn er in dit topic voldoende opgelepeld. Je mag zelf je keuze maken.
Ik zou zeggen; hou het redelijk simpel. Het is geen lab-instrument, maar een leuk ding in combinatie met je toonfiets. Het is niet zinvol om er een superdeluxe ingangstrap voor te zetten.
Ook aan je klokkie is gedacht.
Had ik geen omkijken naar, want de code had ik hier al liggen.
Nu ik het zie; denk er wel aan om een instelpot op de VEE-aansluiting te zetten, anders zie je niet veel op je LCD.
Dan tenslotte de code.
Is bij mekaar een aardige lap geworden.
Je pic zit hiermee voor 96% vol..
Device = 16F628A
XTAL=20
Config HS_osc, CP_OFF, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF, BODEN_off
DelayMS 50
ALL_DIGITAL=true
PORTB_PULLUPS=true
EData 0,0,0,"SUN","MON","TUE","WED","THU","FRI","SAT","JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"
Declare LCD_DTPIN PORTB.0
Declare LCD_RSPIN PORTA.0
Declare LCD_ENPIN PORTA.1
Declare LCD_LINES 2
Cls
Clear
Declare SCL_PIN PORTA.2
Declare SDA_PIN PORTA.3
Dim secs As Byte
Dim mins As Byte
Dim hrs As Byte
Dim weekday As Byte
Dim day As Byte
Dim month As Byte
Dim year As Byte
Dim dummy As Byte ;dummy var for calculations
Dim temp As Word ;temperature
Dim q As Byte ;loopcounter
Dim tablepos As Byte ; position of the eeprom lookup table
Dim mode As Byte ;mode 0= normal operation, everything else= setting by hand
Dim freq As DWord
Dim period As DWord
Dim highpulse As DWord
Dim duty As Byte
Dim teller As Byte
Clear ;reset all variables
TRISA=%11110000
Symbol modekey=PORTB.4
Symbol upkey=PORTB.5
Symbol downkey=PORTA.4
Symbol switch=PORTB.7
Set PIE1.0
Set INTCON.7
Set INTCON.6
on_interrupt GoTo isr
If switch=0 Then
GoTo freq_counter
End If
GoTo clock
;------------------------------------------------------------------------------------
isr:
Clear PIR1.0
Inc teller
Context Restore
;--------------------------------------------------------------------------------------
;------------- initial start of RTC-oscillator
BusIn %11010001,0,[secs] ;read seconds + bit7 (=osc. on/off)
DelayMS 10
Clear secs.7 ; make sure osc. = on
BusOut %11010000,[secs] ;write back to RTC
;-----------------------
BusIn %11010001,2,[hrs] ;read hours
Clear hrs.6 ;select 24 hr clock
BusOut %11010000,2,[hrs] ;write back to rtc
BusOut %10010000,172,[1] ;select oneshot mode in t-sensor.
BusOut %10010000,[238] ;start a conversion
;-----------------------------
clock:
Cls
If mode=0 Then ;read RTC only if mode=0 (no change by hand)
BusIn %11010001,0,[secs,mins,hrs,weekday,day,month,year]
;don't allow some values to be 0 when starting for the first time.
If weekday=0 Then weekday=1
If day=0 Then day=1
If month=0 Then month=1
; because of the fact that each byte in the RTC is organised as a high nibble,
; containing the tens and a low nibble containing the singles, we have
; to manipulate the data a little. The tens are first masked, so we have
; nothing else than that.
; After that, we shift that value 4 bits to the righ, and we multiply it
; by 10 to get a good value. Then we add the singles to it.
dummy=secs & %01110000 ;bitwise AND
GoSub calc_tens
secs=secs & %00001111
secs=secs+dummy
dummy=mins & %11110000
GoSub calc_tens
mins=mins & %00001111
mins=mins+dummy
dummy=hrs & %00110000
GoSub calc_tens
hrs=hrs & %00001111
hrs=hrs+dummy
dummy=day & %11110000
GoSub calc_tens
day=day & %00001111
day=day+dummy
dummy=month & %11110000
GoSub calc_tens
month=month & %00001111
month=month+dummy
dummy=year & %11110000
GoSub calc_tens
year=year & %00001111
year=year + dummy
End If
Print At 1,1,DEC2 hrs,":",DEC2 mins,":",DEC2 secs
Print $FE, $C0 ;go to 2nd LCD-line
For q=0 To 2
tablepos=weekday*3+q ; mon, tue etc. have all 3 positons
dummy=ERead tablepos ;read 3 chars from eeprom table
Print dummy
Next
Print At 2,5,DEC2 day," "
For q=0 To 2
tablepos=month*3+21+q
dummy=ERead tablepos
Print dummy
Next
Print " 20",DEC2 year
If modekey=0 Then
DelayMS 10
Inc mode
If mode>7 Then
mode=0
GoSub write_to_rtc ;convert time/date values back to BCD and send to rtc
End If
Repeat ;wait until modekey is released
Until modekey=1
End If
;---------- this part of the code is only executed when time/date must be set by hand.
If mode>0 Then
DelayMS 300
Select Case mode
Case 1
Print At 1,1," "
DelayMS 300
If upkey=0 Then
DelayMS 10
Inc hrs
If hrs>23 Then
hrs=0
End If
End If
If downkey=0 Then
DelayMS 10
Dec hrs
If hrs>254 Then ;in fact: <0
hrs=23
End If
End If
Case 2
Print At 1,4," "
DelayMS 300
If upkey=0 Then
DelayMS 10
Inc mins
If mins>59 Then
mins=0
End If
End If
If downkey=0 Then
DelayMS 10
Dec mins
If mins>254 Then ;<0
mins=59
End If
End If
Case 3
Print At 1,7," "
DelayMS 300
If upkey=0 Or downkey=0 Then
DelayMS 10
secs=0
End If
Case 4
Print At 2,1," "
DelayMS 300
If upkey=0 Then
DelayMS 10
Inc weekday
If weekday>7 Then
weekday=1
End If
End If
If downkey=0 Then
DelayMS 10
Dec weekday
If weekday<1 Then
weekday=7
End If
End If
Case 5
Print At 2,5," "
DelayMS 300
If upkey=0 Then
DelayMS 10
Inc day
If day>31 Then
day=1
End If
End If
If downkey=0 Then
DelayMS 10
Dec day
If day<1 Then
day=31
End If
End If
Case 6
Print At 2,8," "
DelayMS 300
If upkey=0 Then
DelayMS 10
Inc month
If month>12 Then
month=1
End If
End If
If downkey=0 Then
DelayMS 10
Dec month
If month<1 Then
month=12
End If
End If
Case 7
Print At 2,14," "
DelayMS 300
If upkey=0 Then
DelayMS 10
Inc year
If year>99 Then
year=0
End If
End If
If downkey=0 Then
DelayMS 10
Dec year
If year<1 Then
year=99
End If
End If
End Select
End If
If switch=0 Then
Cls
GoTo freq_counter
Else
GoTo clock
End If
;----------------------------------------------------------------------------------------
calc_tens:
dummy=(dummy/16)*10 ;shift value 4 positions to the right & multiply by 10.
Return
;-----------------------------------------------------------------------------------------
write_to_rtc:
;convert time/date values back to BCD and write it to RTC
dummy=secs/10 ;we only want the 10s here
dummy=dummy*16 ;shift that value to the high nibble
secs=secs//10 ;for the singles we want the remainder of that division.
secs=secs | dummy ;Bitwise OR to combine both values in 1 byte
dummy=mins/10
dummy=dummy*16
mins=mins//10
mins=mins | dummy
dummy=hrs/10
dummy=dummy*16
hrs=hrs//10
hrs=hrs | dummy
dummy=day/10
dummy=dummy*16
day=day//10
day=day | dummy
dummy=month/10
dummy=dummy*16
month=month//10
month=month | dummy
dummy=year/10
dummy=dummy*16
year=year//10
year=year | dummy
BusOut %11010000,0,[secs,mins,hrs,weekday,day,month,year] ;write it al back to RTC
Return
;-------------------------------------------------------------------------------------
freq_counter:
teller=0
T1CON=%00001010
TMR1H=0:TMR1L=0
Set T1CON.0
DelayMS 999
DelayUS 300
Clear T1CON.0
freq.BYTE1=TMR1H
freq.BYTE0=TMR1L
freq=teller*65536
freq=freq + (256 * TMR1H)
freq=freq + TMR1L
Print At 1,1,"FREQ: "
If freq>999999 Then
Cls
Print At 1,1,"OVERFLOW !"
Else
Select Case freq
Case>99999
Print DEC6 freq
Case 10000 To 99999
Print " ",DEC5 freq
Case 1000 To 9999
Print " ",DEC4 freq
Case 100 To 999
Print " ",DEC3 freq
Case 10 To 99
Print " ",DEC2 freq
Case 0 To 9
Print " ",DEC1 freq
End Select
Print " Hz."
period=1000000/freq
teller=0
T1CON=0
TMR1H=0:TMR1L=0
Repeat
If switch=1 Then
GoTo clock
End If
Until PORTA.5=0 ;wachten tot signaal laag is.
Repeat
If switch=1 Then
GoTo clock
End If
Until PORTA.5=1 ;wachten tot signaal hoog is.
T1CON=%00001001 ;tellen kan beginnen. timer1=on
Repeat ;wachten tot signaal weer laag is.
Until PORTA.5=0
T1CON=0 ;timer1 uit.
highpulse=teller*65536 ;berekenen.
highpulse=highpulse + (256 * TMR1H)
highpulse=highpulse + TMR1L
highpulse=highpulse * 20 + 1
duty=highpulse/period
Print At 2,1,"DUTY-CYCLE : "
Print DEC2 duty,"%"
End If
If switch=0 Then
GoTo freq_counter
Else
Cls
GoTo clock
End If
Succes met bouwen. Het is hier in de simulator getest, en ook nog eens op het dev-board. En alles werkt naar behoren.
Duty-cycle gaat wat afwijken boven de 100 KHz, maar daar valt weinig aan te doen.
Technojunk
Printje geëtst hebben? mail me! | Even the invisible must be perfect | Ook een Meetsnoeren ophangrekje
Erg bedankt!.. en dat voor een 628..
Morgen ga ik beginnen met het print ontwerp..
Wat van evel. board heb jij?
Wil er ooit ook eens een kopen.
Zou je de source ook misschien om willen zetten naar HEX.? en het hier willen plaatsen of naar mij toe willen sturen?
Heel erg Bedankt!!
PS: Ik plak nog wel even een 10K pot aan de VEE van het display voor het contrast.
PS2: Waar je de blokgolf ziet moet ik het trapje van pros of van iemand anders {de versterkte output) neer zetten?
[Bericht gewijzigd door Technojunk op (13%)]