- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 10

Thema: Anfänger kann keine 3 leds ansteuern?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    27.07.2007
    Beiträge
    9

    Anfänger kann keine 3 leds ansteuern?

    Anzeige

    Praxistest und DIY Projekte
    Hallo
    ich anfänger bräuchte mal hilfe den ich bringe es nicht zustande 3 Leds (rot,gelb, grün) anzusteuern.
    Es Ist so:
    Ich habe eine Spannung in einer Variablen gespeichert ,wenn die spannung unter 5V ist sollte rot leuchten bei 5 bis 10 V die gelbe und über 10V die grüne. Ansteuerung klapt aber das mit den Spannungen nicht,
    irgendwie stehe ich auf der leitung. Weiss jemand einen trick oder hat einen tip?

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    24.09.2006
    Beiträge
    84
    Quellcode wäre sehr hilfreich .. und natürlich auch, wie die Spannung am ADC angelegt wurde, falls du die vollen 10V angelegt hast, wird wohl irgendwas Schaden genommen haben. Also zumindest Ausschnitte vom Schaltplan, falls nötig.

    Grüße
    CsT

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    14.11.2003
    Beiträge
    813
    Hallo

    Verstehe nicht so ganz was du meinst.
    Hast du dich ueberhaupt mal mit den Grundlagen beschaeftigt?

    MFG

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    27.07.2007
    Beiträge
    9

    hmmm

    Das einlesen mache ich über einen spannungsteiler und geb es an einem display wieder aus. fuktioniert einwand frei.
    Der Wert wir in einer Variablen gespeichert. und die 3 Leds sollten lediglich eine Ladezustandsanzeige geben.
    ich bringe es aber nicht hin eben das bei0- 5 volt nur die gelbe leuchtet und bei 5-10V die gelbe und bei 10-13V die grüne.

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.11.2006
    Ort
    olargues
    Beiträge
    776
    da brauchste sowas in der art:


    Code:
    Const Maxvolt = 248                                       '14.4 volt
    Const Maxvolt2 = 211                                     '13.8 volt
    Const Minvolt2 = 82                                        '11.7 volt
    Const Minvolt = 43                                          '11.0 volt
    
     die constanten hier sind abhängig vom adc, von der referenz und dem spannungsteiler
    
    Dim Spannung As Word
    Dim Spannung8 As Byte
    
    Config Adc = Single , Prescaler = 128 , Reference = Internal
    Start Adc
    
    Spannung = Getadc(0 )
    Shift Spannung , Right , 2
    Spannung8 = Spannung
    
    und dann irgenwie die leds ansteuern --->>
    if spannung8 < minvolt dann rot
    if spannung8 >minvolt and spannung8< maxvolt2 then gelb
    if spannung8> maxvolt2 then grün

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    27.07.2007
    Beiträge
    9
    Ja das auslesen klapp tip top.
    aber die auswertung mit if>5 then.... und if > und und und klappt irgend wie nicht.
    irgendwie stehe ich auf dem schlauch und sehe das problem nicht.
    2 leds ansteuern kein problem. aber sobald ich eine dritte dan klappt es irgendwie nicht mit dem if then else usw. jemand ein tip?

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.10.2004
    Ort
    Baoding
    Alter
    44
    Beiträge
    689
    Wie weiter oben bereits erwähnt wäre der Quellcode nötig um das problem zu erkennen, meine Kristallkugen ist im Wochenende!

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    27.07.2007
    Beiträge
    9
    $regfile = "m32def.dat"
    $crystal = 8000000
    $baud = 4800

    Dim W0 As Word
    Dim Spannung0 As Single
    Dim Spannungger0 As String * 4

    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc

    Do
    Channel = 0
    W0 = Getadc(channel)
    Spannung0 = W0 * 0.0117192
    Spannungger0 = Fusing(spannung0 , "##.##")
    Locate 1 , 1
    Lcd ; "Bat.1:" ; Spannungger0 ; "V"
    Print "ADC-Pin " ; Channel ; " : V " ; Spannungger0
    Waitms 500


    Jetzt wollte ich hier noch 3 leds ansteuern rot gelb grun für die zustandsanzeige:
    (if blblbl > then bla bla bla) das haut aber irgendwie nur mit 2 leds hin)

    Loop

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.11.2006
    Ort
    olargues
    Beiträge
    776
    also ... hier mal aus langeweile für dich gemacht:

    anmerkung dazu:
    diese ganze wandlung zu single und string und der ganze fusing ist ja lustig und für dein display ja auch wichtig! ich würde es aber erstmal weglassen.

    also zunächst die auswertung deiner werte und die steuerung der dioden... und das alles in ganzzahlen... das spart cpu-kapazität.

    wenn es denn eher um einen batteriewächter geht reichen 8 bit auflösung erstmal... deswegen die shift-befehle.

    // einige werden mich steinigen wegen der speziellen befehle im atmel zur justierung ... aber es spielt hier keine rolle //


    die verwendung von avcc als referenz ist nicht so gut, da die betriebsspannung des prozessors ja nicht unbedingt stabil ist. zumindest kann man sagen, dass die option reference=internal irgendwie besser ist.
    da haste wenigstens einen realen bezugspunkt, der beim mega32 wohl auf 2,56 liegen soll.
    es bietet sich auf jeden fall an, an dem pin für die referenzspannung nachzumessen, was denn der reale wert ist.

    für den fall, dass du also die shiftbefehle nun verwendest, können wir davon ausgehen, dass wir vom adc werte zwischen 0 und 255 bekommen.

    nun sagen wir, dass die led1 leuchten soll, wenn die werte unter 100 sind
    wir sagen auch, dass led2 leuchten soll, wenn der wert von 100 bis 200 ist
    und wir sagen led3 ist an, wenn der wert über 200 ist.

    bitte prüfe noch, ob du wirklich auf 8mhz arbeitest... das ist für das programm unwichtig... aber mit 4800 baud scheint mir das nicht okay.

    also hier mein programmvorschlag:

    $regfile = "m32def.dat"
    $crystal = 8000000

    dim spannug as word
    dim spannung8 as byte

    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc

    do

    Spannung = Getadc(0 )
    Shift Spannung , Right , 2
    Spannung8 = Spannung



    if spannung8 < 100 then led1=ein else led1 = aus
    if spannung8 > 99 and spannung8 < 201 then led2 = ein else led2 = aus
    if spannung8 > 200 then led3 = ein else led3 = aus



    loop


    ************************************************** ****


    nun kann man das bestimmt besser programmieren, aber es funzt erstmal.... optimierungen kommen halt später



    gruss kolisson

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    Gerade Dein "Blablabla" wäre schon interessant gewesen - ist der Code für den CIA oder warum schaffst Du es nicht, das VOLLSTÄNDIGE Programm einzustellen??

    Grüße

    Torsten

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress