Hallo, habe ein Programm in Bascom geschrieben, daß den Poti- Wert an ADCO einliest und den zugehörigen Spannungswert an 4 LED's ausgibt. Rein theoretisch müsste doch B0 bei 1,25V, B1 bei 2,5V, B2 bei 3,75V und alle 3 LED's bei 5V aufleuchten. Als Referenz dienen die 5V Versorgungsspannung. An ADC0 muß dann doch die Spannung entsprechend meßbar sein? Das Poti ist an ADC08 (pin23 Schleifer), + der Anfang und - das Ênde angeschlossen. Von 0V bis 2,4V leuchtet B0, von 2,4V bis 3,4V leuchtet B1, von 3,4 V bis 5V leuchtet (nur!)B1. Mache ich etwas falsch? *********************************************************** $regfile = "m8def.dat" $crystal = 1000000 Dim Ad As Word Config Portb = Output Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc Do Ad = Getadc(0) If Ad = 256 Then Portb.0 = 1 : Portb.1 = 0 : Portb.2 = 0 '1,25V If Ad = 512 Then Portb.0 = 0 : Portb.1 = 1 : Portb.2 = 0 '2,5V If Ad = 768 Then Portb.0 = 0 : Portb.1 = 0 : Portb.2 = 1 '3,75V If Ad = 1024 Then Portb.0 = 1 : Portb.1 = 1 : Portb.2 = 1 '5,0V End If Loop ********************************************************** Danke im Voraus Maxx
Hallo, habe mich verschrieben und möchte es dem "Antworter" nicht noch erschweren. >> Das Poti ist an ADC0 (pin23 Schleifer), + der Anfang und - >>das Ênde angeschlossen. >>Von 0V bis 2,4V leuchtet B0, von 2,4V bis 3,4V leuchtet B1, von 3,4 V >>bis 5V leuchtet (nur!) B2. Gruß Maxx.
Maxx schrieb: > Do > > Ad = Getadc(0) > > If Ad = 256 Then Portb.0 = 1 : Portb.1 = 0 : Portb.2 = 0 '1,25V > > > > If Ad = 512 Then Portb.0 = 0 : Portb.1 = 1 : Portb.2 = 0 '2,5V > > > > If Ad = 768 Then Portb.0 = 0 : Portb.1 = 0 : Portb.2 = 1 '3,75V > > > > If Ad = 1024 Then Portb.0 = 1 : Portb.1 = 1 : Portb.2 = 1 '5,0V > > > > End If > > Loop If Ad < 256 Then Portb.0 = 1 Portb.1 = 0 Portb.2 = 0 '1,25V ElseIf Ad < 512 Then Portb.0 = 0 Portb.1 = 1 Portb.2 = 0 '2,5V ElseIf Ad < 768 Then Portb.0 = 0 Portb.1 = 0 Portb.2 = 1 '3,75V Elseif If Ad < 1024 Then Portb.0 = 1 Portb.1 = 1 Portb.2 = 1 '5,0V end if muste richtig gehen. falls kein end if, else etc gibt wird nur die erste anwesung nach IF bedingt ausgeführt. also die zuweisungen 2 und 3 werden ignoriert. 2 Du solltest eigentlich nicht die Stuffen direkt abfragen mit "=", sondern bereiche mit "<" weil snst nur an dem stuffenwert was geändert wird also bei einderung won 298 auf 45 passiert nix.
Das geht am Besten mit der Select-Käse äh Case Anweisung: $regfile = "m8def.dat" $crystal = 1000000 Dim Ad As Word Config Portb = Output Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc Do Ad = Getadc(0) Select Case Ad Case 0 To 255 : Portb = &B00000001 Case 256 To 512 : Portb = &B00000010 Case 512 To 768 : Portb = &B00000100 Case 769 To 1023 : Portb = &B00000111 Case Else : Portb = 0 End Select Loop MfG Paul
Hallo, vielen Dank für Eure Antworten. Hätte ich vielleicht selber draufkommen können, aber manchmal sieht man ja den Wald vor lauter Bäumen nicht. @ Paul dises Prog. ist gut und durch "Case"-Abfrage kürzer und besser als meins. Ich habe mal die Spannungen gemessen: 'B0 gleich an 'B1 geht bei 1,35V (gemessen)an und bleibt bis 2,35V an ; B0 ist dkl. 'Abfrage auf 255 'B2 geht bei 2,58V (gemessen)an und bleibt bis 3,8V an ; B0 und B1 sind dkl. 'Abfrage auf 512 'ab 3,8V gehen alle LED's an und bleiben bis 5V (gemessen)auch an. 'Abfrage auf 1024 Ist damit die Genauigkeit der AD-Wandlung ausgeschöpft? @Gast Ja, stimmt, daß er alle anderen Abfragen ignoriert. Der Editor meldet immer 2 Fehler bei Deinem Programm. Vl. Grüße und Danke Maxx
mal dumm fragen: 1024?? ich dachte immer von 0-1023 sind die möglichen werte.. gruß
@ NoName (Gast) >mal dumm fragen: 1024?? ich dachte immer von 0-1023 sind die möglichen >werte.. Das ist auch so.
>>mal dumm fragen: 1024?? ich dachte immer von 0-1023 sind die möglichen >>werte.. Ja, deswegen hat sich schon manch Einer am Kopf gekratzt. ;-) Aber: von 0-1023 sind 1024 Werte. 1023 ist der "obere Anschlag" und mehr kommt ohnehin bei der Auflösung von 10 Bit nicht aus dem Wandler heraus. MfG Paul
Maxx schrieb: > Ist damit die Genauigkeit der AD-Wandlung ausgeschöpft? Nein. Aber das ist das, was da programmiert wurde.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.