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...

http://home.casema.nl/galaxy/freq_time.jpg

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.

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%)]

Een ingangstrap die redelijk gevoelig is, enigzins beschermd is tegen misbruik en toch simpel is, kan er zo uitzien:
http://home.scarlet.be/prosje/Ingangstrap.png

Die heeft genoeg aan 100mV, is bestand tegen 50V, maar je kan er best geen netspanning op aansluiten... :-)

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.

Voor lage frequenties kan het ook zonder ingangs-C. Dat kost je enkel een schakelaar om de C te overbruggen... :-)

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.

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

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.

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? :o

@Duty cycle: Geeft bij een blokgolf de verhouding tussen de twee situaties aan. Bijv:


25%:
-|    
 |___

50%:
--|
  |__

75%:
---|
   |_

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.

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%.

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%?

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%

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.

Super!
Nou, ik kan niet wachten tot ik de DS1307 en de code binnen heb!

http://img257.imageshack.us/img257/599/screenhunter02jan130557st3.jpg
Voor een LF pre-amp kan je deze gebruiken.
Deze is afkomstig uit een LF counter. 1Hz tot 5MHz.

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.

http://home.casema.nl/galaxy/freq_time2.jpg

Ook aan je klokkie is gedacht.
Had ik geen omkijken naar, want de code had ik hier al liggen.

http://home.casema.nl/galaxy/klokkie.jpg

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.

Dat is ook niet zo'n ramp, 100kHz is al vrij spannend voor die funcgen

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%)]