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 .
Hier mal der Code bis jetzt. Was ich nicht ganz verstehe ist wie ich die Zeit messe zwischen dem Erscheinen der roten Markierung.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
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?







Zitieren

Lesezeichen