So, ich habe die Hardware soweit am laufen...
Zwei CNY70 auf den ADC gelegt. Bei silberner Scheibe habe ich einen Wert zwischen 0 - 7, bei der roten markierung habe ich einen wert >15 .
Code:
'Emon.bas
'Energiemonitor für Strom, Gas und Wasser
'Sensor für Strom: 2 CNY70 am AD-Wandler
'Sensor für Gas und Wasser Kontakte an Portpins
'v0.1 16.01.2010 - Test der Analogen Eingänge, Debug über RS232
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4
Config Lcdbus = 4
Config Timer1 = Timer , Prescale = 256 'Konfiguriere Timer1
Enable Timer1 'schalte den Timer1 ein
On Timer1 Isr_von_timer1 'verzweige bei Timer1 überlauf zu Isr_von_Timer1
Enable Interrupts
Timer1 = 34285 'Timer1 soll schon von 34285 wegzählen
Config Adc = Single , Prescaler = Auto
Start Adc
Dim W1 As Word , W2 As Word , Diff As Word , Channel As Byte , Mark As Bit , Time As Word , Count As Word , Count2 As Word,
Dim Flanke1 As Bit , Flanke2 As Bit , Flanke3 As Bit
Dim Sek As Word , Sek_alt As Word , Sek_delta As Word
Channel = 0 'Startkanal für ADC
Do
W1 = Getadc(0)
W2 = Getadc(1)
Diff = W2 - W1
Print "Kanal1: " ; W1 ; "Kanal2: " ; W2 ; "Differenz: " ; Diff
Cls
Locate 1 , 1
Lcd "Diff.:" ; Diff
If Diff > 15 Then
Mark = 1
Locate 2 , 1
Lcd "---OOO---"
Else
Mark = 0
End If
If Mark = 0 Then
Sek = Count
Elseif Mark = 1 Then
Sek_alt = Count
Sek_delta = Sek - Sek_alt
End If
Locate 2 , 10
Lcd "sek: " ; Sek_delta
Waitms 100
Loop
End
Isr_von_timer1: 'ISR von Timer1
Timer1 = 34285 'Timer1 soll wieder von 34285 wegzählen
Incr Count
Toggle Flanke1
Return
Hier mal der Code bis jetzt. Was ich nicht ganz verstehe ist wie ich die Zeit messe zwischen dem Erscheinen der roten Markierung.
Ich müsste wenn die Markierung kommt den Zählerstand speichern, und wenn die Markierung erneut erscheint die Differenz zum Aktuellen Zählerstand ermitteln und Wieder neu starten...
Aber ich weiss nicht wie?
Irgenwas mit flankenerkennung, hat jemand einen Tip?
Lesezeichen