- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 22

Thema: IF - Schleife geht nicht richitg ?!?

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.12.2004
    Beiträge
    486
    Anzeige

    E-Bike
    Pulldown einbauen!

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2004
    Ort
    durmersheim international
    Alter
    65
    Beiträge
    159
    hi,
    irgendwie is da noch was durcheinander, du fragst doch pina.0 ab. was macht die aussage '...sobald einmal kurz spannung an pina.4 anliegt...', meinst du die spannung, die der AVR eingeschaltet hat oder legst du fröhlich an pina.4 spannung an und erwartest, dass pina.0 darauf reagiert?
    du hast auch wieder geschrieben: if pina.0 = 0 then ' wenn spannung anliegt
    es ist so: liegt spannung an, wird der pin als 1 gelesen, keine spannung liefert 0.
    probierst du:
    if pina.0 = 0 then reset porta.4 else set porta.4
    kürzer geht's nimmer und muss funtzen, aber nur wenn die led an A4 und der spannungseingang an A0 hängt.
    grüssens, harry
    der kopf ist rund damit das denken seine richtung ändern kann...

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    29.03.2004
    Ort
    Tauberbischofsheim
    Alter
    35
    Beiträge
    69
    es geht

    hier das Programm
    'Roboter Projekt
    '-------------------------------------------------------------- ---------------
    $regfile = "m32def.dat" 'AT Mega 32
    $crystal = 8000000 'Quarz: 8 MHz
    '------------------ Pin setzten -----------------------------------------------
    Ddra = &B11111111 'Pin PA 3-7 auf Output setzen

    Do

    If Pina.0 = 1 Then Reset Porta.4 Else Set Porta.4

    Loop
    End

    aber nur weil jetzte A0 auch Output ist ...
    Ddra = &B11111111

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    29.03.2004
    Ort
    Tauberbischofsheim
    Alter
    35
    Beiträge
    69
    es lag nun wirklich an diesem
    Ddra = &B11111111


    'Roboter Projekt
    '-------------------------------------------------------------- ---------------
    $regfile = "m32def.dat" 'AT Mega 32
    $crystal = 8000000 'Quarz: 8 MHz

    '------------------ Pin setzten -----------------------------------------------
    Ddra = &B11111111 'Pin PA 3-7 auf Output setzen

    Ddrb = &B00000001 'Pin PB 0 auf Output setzen

    '------------------------------------------------------------------------------
    '------------------ MainLoop --------------------------------------------------
    '------------------------------------------------------------------------------
    Do

    '------------------ Motore einschalten ----------------------------------------
    Porta.3 = 1 'Motor Rechts einschalten
    Porta.6 = 1 'Motor Links einschalten

    '################################################# ################################################## ###################
    If Pina.0 = 1 Then 'Wenn bei PA0 Spannung anliegt
    'rückwärts fahren
    Porta.4 = 0 'vorwärts Rechts
    Portb.0 = 0 'vorwärts Links
    Porta.5 = 1 'rückwärts Rechts
    Porta.7 = 1
    End If 'rückwärts Links
    '################################################# ################################################## ###################
    If Pina.0 = 0 Then 'Wenn keine Spannung bei PA0 anliegt
    'vorwärts fahren
    Porta.4 = 1 'vorwärts Rechts
    Portb.0 = 1 'vorwärts Links
    Porta.5 = 0 'rückwärts Rechts
    Porta.7 = 0 'rückwärts Links
    End If
    '################################################# ################################################## ###################


    Loop
    End

  5. #15
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2004
    Ort
    durmersheim international
    Alter
    65
    Beiträge
    159
    hi,
    'nen input als output deklarieren müssen damit er gelesen werden kann ist nicht wirklich gagig. ich verwend immer config xxxx = input, ist deutlicher.
    trotzdem toll dass es marschiert, gruss, harry
    der kopf ist rund damit das denken seine richtung ändern kann...

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    29.03.2004
    Ort
    Tauberbischofsheim
    Alter
    35
    Beiträge
    69
    so weit so gut , aber da gibt es noch ein Problem
    wenn man von einer 5V Batterie genau 5V vcc auf A0 anlegt funktioniert das ganze auch \/
    aber sobald man ein Widerstand oder Transistor mit vor A0 baut wird kein Input an diesem Pin gemessen

    als Input soll ein Impuls von dem IS471F (IR Diode) gemessen werden sobald er was erkennt hat (Hinternis) ... deswegen muss ich einen Transistor einbauen ...

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2004
    Ort
    durmersheim international
    Alter
    65
    Beiträge
    159
    kommt einfach nicht hin, ich fahre inputs grundsätzlich über 5k6 widerstand an, damit ich's nicht versehentlich 'himmle', wenn mal an der spannung was blöd is. über 5k6 kannste input's noch mühelos lesen, bei zu hohem vorwiderstand wird der AVR anfälliger für störungen. ein input MUSS als input definiert werden können und dann auch so funktionieren, alles andere wäre gesundgebetet.
    also, alles durchchecken, fehler finden, korrigieren, freuen weil's perfekt geht, und vor allem sich niemals mit 'halbechten' lösungen zufriedengeben, das rächt sich immer an anderer stelle.
    grüssens, harry
    der kopf ist rund damit das denken seine richtung ändern kann...

  8. #18
    Benutzer Stammmitglied
    Registriert seit
    29.03.2004
    Ort
    Tauberbischofsheim
    Alter
    35
    Beiträge
    69
    ist so ein Pulldown dann ein 5k6 Widerstand ?
    könnte es vielleicht sein das der obere Code nicht gegangen ist weil kein Pulldown widerstand eingebaut war und jetzte mit pulldown gehen müsste ?

  9. #19
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2004
    Ort
    durmersheim international
    Alter
    65
    Beiträge
    159
    würde ich nicht als pulldown nehmen, geht zwar, aber dann müsste der 'signalstrombegrenzungswiderstand' (was'n wort, odda???) so niedrig gewählt werden können, dass (blöde anschaltung vorausgesetzt) der AVR gekillt werden kann. ich hantier in meinen schaltungen immer mit 5v und 24v rum, da is schnell mal versehentlich (oooohps) der 24v zweig auf den input vom AVR gelegt, deswegen verwende ich immer 47k als pulldown und 5k6 als 'signal...' wenn du nur 5v handlest (oder immer alles top im griff hast) kannst dun natürlich auch pulldown von 5k6 und keinen begrenzer nehmen (oder halt so um 1k). der begrenzer und der pulldown bilden ja einen spannungsteiler und der darf das signal nicht soweit 'runterziehen', dass der AVR es nicht mehr als high erkennt. also nie 1:1, immer > 1:5.
    die nummer mit pulldown hatten wir weiter oben schon, ich dachte der wär in der schaltung drinne, aber richtig, wenn ein input 'in der luft hängt' reicht ein muckenschiss an störung, um ihn high oder low zu setzen, wie er gerade lustig ist. input's immer auf einem klaren pegel führen.
    gruss + viel spass, harry
    der kopf ist rund damit das denken seine richtung ändern kann...

  10. #20
    Benutzer Stammmitglied
    Registriert seit
    29.03.2004
    Ort
    Tauberbischofsheim
    Alter
    35
    Beiträge
    69
    also ich habe direkt an den pin vom M32 einen Printklotz (so ein Teil wo man ein Kabel anklemmen kann) hingebaut , d.h. der Input hängt direkt in der Luft !
    wie du es nun gesagt hast könnte es vielleicht daran liegen das es so automatisch immer auf rückwärts gestellt hat so das es eigentlich nie vorwärts fahren konnte ...
    ist es nun wirklich so das es an diesem gelegen ist das es mit dem Input nie geklappt hat ?
    muss ich dann einen widerstand direkt an den Pin bauen und dann den Printklotz danach ?
    dann wäre ja das problem gelöst ?!?

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress