- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 27

Thema: Erneuter Mikrokontrollereinstieg

  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Anzeige

    Powerstation Test
    was soll ich tun?
    Kleineren Widerstand nehmen

    Bei ´ner Betriebsspannung von 3,2V, einer LED-Spannung von vielleicht 2,5V und einem Strom von 15mA wären das roundabout 50 Ohm. Der Controller kann den Strom einer normalen LED locker ab.

    Oder Variante 2: 1 bis 2 Dioden vor bzw. hinter die LED schalten, je nachdem ob die LEDs von + zum Controller gehen oder vom Controller nach GND. Das hätte den Vorteil, dass Du´s nur einmal für beliebig viele LEDs brauchst.

  2. #12
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330
    Der Controller kann den Strom einer normalen LED locker ab.
    Ich habe mir Unterstützung bei einem Bekannten geholt, und der meinte: LED frisst 50 mA, Mikrocontrollerausgang hält maximal 20 mA aus...
    Nicht korrekt??

    Oder Variante 2: 1 bis 2 Dioden vor bzw. hinter die LED schalten, je nachdem ob die LEDs von + zum Controller gehen oder vom Controller nach GND. Das hätte den Vorteil, dass Du´s nur einmal für beliebig viele LEDs brauchst.
    Die Dioden als Widerstand nutzen oder wie?

    Und alle Leucht-Dioden auf die Dioden schließen und die dann an GND?

  3. #13
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Das mit den 20 mA ist sicherlich korrekt. Normale (!) LEDs sollten schon bei deutlich niedrigerem Strom (10 - 15mA) ordentlich leuchten. Auf allen möglichen gängigen Experimentierboards werden LEDs mit Vorwiderstand von +Ub zum Controller geschaltet - das hat sich bewährt.

    So ein I/O-Port kann etwas mehr Strom nach Masse ableiten (wenn er LOW ist) als er abgeben kann, wenn er HIGH ist. Deshalb sind LEDs meistens von +Ub zum Controller geschaltet - und gehen an, wenn der Port 0 ist.

    Die Diode ist nicht in erster Linie als Vorwiderstand zu sehen, sondern verbrät ziemlich konstant 0,7 Volt. Und weil diese 0,7 Volt unabhängig davon sind wie hoch der Strom gerade ist, funktioniert das für eine LED genauso gut wie für 10 LEDs. Die Diode liegt entweder zwischen +Ub und der LED (bzw. den LEDs), oder verbindet die LEDs mit GND. Je nachdem, ob Du die LEDs mit einem 1 oder 0 schalten möchtest.

    Wenn Du ein Multimeter hast, miss doch mal Spannung und Strom nach, bei denen die LED ordentlich leuchtet. Dann kannst Du abschätzen, wie viele Dioden Du in Reihe schalten musst, wenn Du mit 3,2 Volt reingehst.

  4. #14
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330
    Ich glaub's kaum:

    Gestern hatte ich anscheinend einen Chip geschrottet weil falsch angehängt (Stromversorgung versehentlich an PIN)

    Heute nehme ich den nächsten Chip, und das Programm läuft.
    Dann lade ich das Programm auf den 'kaputte' Chip - und siehe da: er läuft wieder!!

    Bei ´ner Betriebsspannung von 3,2V, einer LED-Spannung von vielleicht 2,5V und einem Strom von 15mA wären das roundabout 50 Ohm.
    Als Wiederstand hatte ich keinen 50 Ohm, darum habe ich 15+10+10 Ohm genommen. Die LED hat nicht geleuchtet, daher nahm ich einen weg.

    Und das war der Beginn meiner ersten Blinkenden LED.

    Welchen (Vor)widerstand brauche ich denn, wenn ich einen Schalter (Taster) einbauen will?

  5. #15
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Und das war der Beginn meiner ersten Blinkenden LED.
    Immer wieder schön, über was für Kleinigkeiten man sich freuen kann

    Welchen (Vor)widerstand brauche ich denn, wenn ich einen Schalter (Taster) einbauen will?
    Wenn Du damit einen Eingang auf High oder Low legen möchtest, brauchst Du gar keinen Vorwiderstand, weil die Eingänge von sich aus äußerst hochohmig sind (ich glaube mehrere 100 MOhm). Deshalb müssen die Dinger auch immer einen definierten (!) Pegel führen - lässt man sie einfach unbeschaltet in der Luft hängen, fangen sie sich alle möglichen Störsignale ein.

    Die Controller haben für jeden I/O-Port einen eingebauten PullUp-Widerstand, der den Eingang über ca. 50 kOhm auf +Ub zieht. Den aktiviert man mit PORTX.Y = 1. Damit liegt der Pin solange auf High, bis der Taster ihn mit Masse verbindet. Da der PullUp-Widerstand hochohmig ist, fließt auch nur ein sehr kleines Strömchen, wenn der Taster den +Ub-führenden Anschluss auf GND "zwingt".

    Also in Kürze:
    wenn ein I/O-Port als Eingang läuft, schaltet PORTX.Y den PullUp-Widerstand ein oder aus, und über PINX.Y wird der Zustand des Pins abgefragt.

    o.K.?

  6. #16
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330
    Kleine Frage: +UB, was bedeutet das?
    wenn ein I/O-Port als Eingang läuft, schaltet PORTX.Y den PullUp-Widerstand ein oder aus, und über PINX.Y wird der Zustand des Pins abgefragt.
    Das heißt, sobald er ein Eingang ist, ist der Pullupwiderstand aktiviert.

    Auf deutsch ich muss nur mehr den Pin mit der Masse verbinden, und dazwischen einen Schalter.
    Der aktivierte Pull-up-Widerstand schützt den Chip von selbst?

    PS: Frohe Ostern!

  7. #17
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Kleine Frage: +UB, was bedeutet das?
    Positiver Pol der Betriebsspannung (d.h. bei Dir 3,6V).

    Das heißt, sobald er ein Eingang ist, ist der Pullupwiderstand aktiviert.
    Nicht ganz. Ich versuch mal, die 4 möglichen Fälle systematisch darzustellen (am Beispiel des Anschlusses B.0):

    DDRB.0 = 0: Anschluss ist als Eingang konfiguriert
    PORTB.0 = 1: Interner PullUp-Widerstand aktiviert
    PORTB.0 = 0: Interner PullUp-Widerstand nicht aktiviert

    (Der logische Pegel am Eingangspin steht in PINB.0.)


    DDRB.0 = 1: Anschluss ist als Ausgang konfiguriert
    PORTB.0 = 1: Anschluss führt ein High-Signal
    PORTB.0 = 0: Anschluss führt ein Low-Signal

    (Der Registerplatz PINB.0 hat hier keine Bedeutung.)

    Jetzt klarer??

    Wenn so´n Anschluss als Eingang konfiguriert ist (DDRX.Y = 0), ist er wie gesagt extrem hochohmig. Das bedeutet für die Praxis folgendes:

    1. kannst Du ihn ohne jeden Vorwiderstand mit + oder Masse verbinden. Es fließt praktisch kein Strom, und Du musst ihn auch nicht schützen.

    2. Wenn Du ihn weder mit + noch mit Masse verbindest, hängt er "in der Luft". Und weil die Luft voll mit allem möglichen Elektrosmog ist, wird der Eingang ein vollkommen chaotisches Signalgewirr einfangen. Und das ist die Stunde des PullUp-Widerstandes:
    Wenn er alleine am Werke ist, zieht er den Pin nämlich einerseits auf ein sauberes "High". Er ist aber andererseits so hochohmig, dass er definitiv den kürzeren zieht, wenn der Anschluss über einen Taster, einen Draht oder sonsteine gut leitende Verbindung auf Low gezogen wird - dagegen kommt er nicht an.

  8. #18
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330
    Also wenn er ein Eingang ist, kann man den Pull-up ein oder aussachalten...

    Das müsste dann in C sein PINA=3, dann sind P0 und P1 pull-ups aktiviert, die anderen deaktiviert... ?

    Zitat:
    Kleine Frage: +UB, was bedeutet das?


    Positiver Pol der Betriebsspannung (d.h. bei Dir 3,6V).
    Bei mir steht immer Vcc, das ist also das selbe wie UB.



    Jetzt muss ich nur mehr den Code finden, um if mit C zu programmieren...
    Ich nehme an, die Pull-ups sind automatisch an, wenn sich sie nicht ausschalte...

  9. #19
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Jetzt muss ich nur mehr den Code finden, um if mit C zu programmieren...

    Das müsste dann in C sein PINA=3, dann sind P0 und P1 pull-ups aktiviert, die anderen deaktiviert... ?
    In Bascom (!) werden die PullUps über das PORT-Register gesetzt, und nicht über PIN (erwähnte ich glaube ich schon mal...).

    Wie das in C ist, darüber kann ich nur spekulieren. Aber auch für diese Sprache gibt´s ein extra Forum im RN:

    https://www.roboternetz.de/phpBB2/viewforum.php?f=34

    Ich nehme an, die Pull-ups sind automatisch an, wenn sich sie nicht ausschalte...
    Dem ist definitiv NICHT so: Beim Einschalten steht in den DDR- und PORT-Registern &B00000000. Das heißt alle Anschlüsse sind erstmal als Eingänge ohne PullUps konfiguriert.

  10. #20
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    37
    Beiträge
    1.225
    Nicht nur in Bascom, der Registerzugriff verhält sich bei beiden Programmiersprachen transparent so wie im Datenblatt deines AVRs beschrieben.
    DDR auf Eingang -> PORT schaltet Pullup ein oder aus
    DDR auf Ausgang -> PORT schaltet die "Leistungsstufe" auf "High" oder "Low"

    mfG
    Markus

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress