Forum: Mikrocontroller und Digitale Elektronik Attiny24 gibt verschiedene Spannungen ab


von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

erstmal zu meinem Vorhaben:

Ich will mit einem Attiny24 und einem Motortreiber (L293D) 2 Motoren zum 
laufen bekommen.
Es gibt 2 Schalter pro Motor - einmal für links und rechts, sofern 
jeweils einer auf I ist.
Diese Stati werden über den Attiny auf PB0 und PB1 als Eingang abgefragt 
und sollen, sofern ein Schalter umgelegt ist, den Motor über A0 + A1 
(jeweils auf den Enabled vom L293D) und A2 - A5 (für die Drehrichtung) 
ansteuern.
Die Spannungsversorgung des L293D wird über eine PWM zwischen 0 und 6V 
eingestellt. Da die ganze Schaltung dafür mit 9V betrieben wird, steckt 
vor dem Attinyund dem L293D (für VC) noch ein L7805.

Das ganze habe ich erstmal auf einem Breadbord zusammengesteckt, wenn 
ich aber dann den Attiny programmiere und die Volt nachmesse, gibt der 
Attiny auf den entsprechenden Pins diverse Spannungen aus: 1,31V, 2,01V 
und 4,6V
Der L293D funktioniert natürlich laut Datenblatt erst ab 3,2V!
Hat jemand eine Idee woran das liegen kann?

Kenndaten zum Motor: 3-6V mit 60mA

Ich habe hier mal meine Schaltung gezeichnet - der einfachheit halber 
ohne PWN und 2. Motor - ist genauso angeschlossen, auf der anderen Seite 
des L293D

von ??? (Gast)


Lesenswert?

Thomas schrieb:
> Die Spannungsversorgung des L293D wird über eine PWM zwischen 0 und 6V
> eingestellt.

Sehr ungewöhnlich. Was ist das genau und wie funktioniert diese "PWM"?

von Thomas M. (Gast)


Angehängte Dateien:

Lesenswert?

Die PWM sieht so aus.
Funktioniert einwandfrei!

Der Fehler tritt allerdings auch auf, wenn man den L293D absteckt und 
direkt an den Pins die Spannunf misst.

Habe auch verschiedene attiny24 getestet, immer das selbe Phänomen.

von Falk B. (falk)


Lesenswert?

@ Thomas (Gast)

>Die Spannungsversorgung des L293D wird über eine PWM zwischen 0 und 6V
>eingestellt.

Wieso 6V?

>Das ganze habe ich erstmal auf einem Breadbord zusammengesteckt, wenn
>ich aber dann den Attiny programmiere und die Volt nachmesse, gibt der
>Attiny auf den entsprechenden Pins diverse Spannungen aus: 1,31V, 2,01V
>und 4,6V

DDR Register richtig gesetzt?

>Kenndaten zum Motor: 3-6V mit 60mA

>Ich habe hier mal meine Schaltung gezeichnet - der einfachheit halber
>ohne PWN und 2. Motor - ist genauso angeschlossen, auf der anderen Seite
>des L293D

Wozu braucht man einen NE555 zur PWM-Erzeugung, wenn man einen 
Mikrocontroller hat?

von Thomas M. (corux)


Lesenswert?

Hab mich nun mal registriert :)

Die 0-6V sind bekommt der L293D auf VS für den Motor, auf VSS liegen die 
5V aus dem L7805 (real 4,99V).
Sollte soweit korrekt verdrahtet sein.

DDR Register sind auf 0x00 für B und 0xFF für A, da über B die Schalter 
abgetastet werden und auf A die Signale ausgegeben werden sollen.

Den NE555 habe ich ehrlich gesagt aus Faulheit in der Schaltung 
gelassen, da ich die Motoren zuerst einfach mit PWM und H Brücke steuern 
wollte, was allerdings nicht ganz so funktionierte, wie ich mit das 
vorgestellt hatte.
Ich wollte mich allerdings eh noch belesen, wie eine PWM auf einem 
Attiny zu realisieren ist und es ggf. üben ihn laufen lassen.

Nur möchte ich als allererstes das Problem mit der falschen Spannung 
lösen! :)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Thomas schrieb:
> Die Spannungsversorgung des L293D wird über eine PWM zwischen 0 und 6V
> eingestellt.
Bist du sicher, dass diese Vorgehensweise üblich und gut ist?

> Ich will mit einem Attiny24 und einem Motortreiber (L293D) 2 Motoren zum
> laufen bekommen.
Dann mach das so, wie es im Datenblatt des L293 angegeben ist. Nicht so, 
wie du dir da ausgeknobelt hast.
Die Geschwindigkeit des Motors wird über ewine passende Ansteuerung der 
entsprechenden Motortreiber geändert. Niemals aber über die 
Versorgungsspannung!
Was ist die Mindestspannung, die ein L293D braucht, um überhaupt zu 
funktionieren?
Die Versorgung der Endstufen darf nicht unter die des Logikteils kommen. 
Und der funktioniert ab 4,5V...

: Bearbeitet durch Moderator
von Stromverdichter (Gast)


Lesenswert?

Lade doch bitte mal deine Code hoch. Eventuell liegt da der Fehler.

von Thomas M. (corux)


Lesenswert?

@Lothar Miller, Vielen Dank für die Info!
ich war sehr lange Zeit vom Thema Elektronik entfernt und habe das 
anhand des Datenblattes wohl nicht überrissen.

Ich lege also 0-255 bzw. die PWM mit dem NE555 an den Enable an um die 
Geschwindigkeit zu steuern. Wenn ich das richtig sehe, gehen bei diesem 
Motortreiber maximal 7V an Enable. Dafür benötige ich als logic supply 
7V und als Supply Voltage mehr als 7V (also zb meine 9V vom Netzteil), 
ist das soweit richtig gedacht?

Ich werde das heute Abend gleich mal ausprobieren und dann davon 
berichten :)

Vielen Dank an alle!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Thomas Moosmueller schrieb:
> Ich lege also 0-255 bzw. die PWM mit dem NE555 an den Enable an um die
> Geschwindigkeit zu steuern. Wenn ich das richtig sehe, gehen bei diesem
> Motortreiber maximal 7V an Enable. Dafür benötige ich als logic supply
> 7V und als Supply Voltage mehr als 7V (also zb meine 9V vom Netzteil),
> ist das soweit richtig gedacht?
Du versorgst den Baustein mit 5V Logikspannung. Und du versorgst den 
NE555 mit der selben Logikspannung. Die PWM vom NE555 geht dann auf das 
Enable.
Und die Endstufe versorgst du mit einer Spannung, die gleich oder 
grösser der Logikspannung ist. Wenn deine Motoren z.B. mit 12V laufen, 
dann kommen da diese 12V hin.

Kleiner Tipp: der L293 ist uralt. Da hat garantiert schon mal jemand 
diese Aufgabe gelöst uns im Netz veröffentlicht...

von Thomas M. (corux)


Lesenswert?

Hallo,

ich habe es nun hinbekommen, dass es so funktioniert, wie ich mir das 
vorstelle!
In erster Linie war der L293D falsch beschalten und ich musste meinen 
Code geringfügig abändern.

Ich weiß natürlich, dass es edler und platzsparender wäre die PWM 
software-seitig auszuführen.
Nun stellt sich für mich noch die Frage, ob es denn einen Nachteil hat, 
die "externe" PWM mit dem NE555 zu verwenden? jeweils bei den beiden 
Motoren auf den enable vom L293D.

Ich bekomme eine Softwareseitige PWM schon hin, nur ist für mich das 
auslesen eines Poti am ADC ein Mysterium.. habe schon mehrere Tage 
gegoogled, aber nichts passendes (das ich verstehe) gefunden.

von San L. (zwillingsfreunde)


Lesenswert?

Thomas Moosmueller schrieb:
> Ich bekomme eine Softwareseitige PWM schon hin, nur ist für mich das
> auslesen eines Poti am ADC ein Mysterium.. habe schon mehrere Tage
> gegoogled, aber nichts passendes (das ich verstehe) gefunden.

Hast du dir dafür schon einmal diese Tutorials durchgelesen?
http://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Analoge_Ein-_und_Ausgabe

von Thomas M. (corux)


Lesenswert?

Vielen Dank!

Ich arbeite mit einem Attiny24 und will das Poti direkt an die 5V vom 
7805 anschließen, wäre das folgender Code korrekt?


void ADC_Init(void) {

    ADMUX = (1<<REFS1)|(1<<REFS0);  //VCC(=5V) als Referenz
    ADCSRA = (1<<ADPS1)|(1<<ADPS1)|(1<<ADPS0);     // Frequenzvorteiler 
=128, da ich mit 20 MHz takte
  ADCSRA |= (1<<ADEN);                  // ADC aktivieren
  ADCSRA |= (1<<ADSC);                  // eine ADC-Wandlung


für die PWM frage ich dann in einer Dauerschleife den ADC ab und lese es 
in DutyCycle ein, richtig?

von Karl H. (kbuchegg)


Lesenswert?

Thomas Moosmueller schrieb:
> Vielen Dank!
>
> Ich arbeite mit einem Attiny24 und will das Poti direkt an die 5V vom
> 7805 anschließen

Hoffentlich als Spannungsteiler verschaltet

> wäre das folgender Code korrekt?

Warum probierst du es nicht einfach aus?

Haeng eine Led in Standardbeschaltung an den Timer PWM Pin, benutze 
deine ADC Routinen um den Duty Cycle zu veraendetn und wenn du am Poti 
drehst muss die Led heller und dunkler werden.
Ja, manchmal schreibt man auch Testprogramme, nur um sich mit einer 
Technik vertraut zu machen. Das Testprogramm ist schneller geschrieben 
als du hier die Frage formulieren konntest. Besonders Neulinge 
profitieren extrem davon und gewinnen enorm an Sicherheit, wenn sie 
soviel Code wie moeglich schreiben, selbst wenn dieser Code in seiner 
Funktion als Testcode wieder weggeworfen wird. Die Codebausteine fuer 
ADC und PWM bleiben ja erhalten und der Teil der dann tatsaechlich 
verworfwn wird ist lediglich eine Portinitialisierung und eine 
Zuweisung. Beides nichts dem man lange nachtrauern muesste.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

@ Thomas Moosmueller (corux)

>Ich weiß natürlich, dass es edler und platzsparender wäre die PWM
>software-seitig auszuführen.

Es ist vor allem deutlich kompakter und LEISTUNGSFÄHIGER! Du hast dann 
die VOLLE Kontrolle über deinen Motor. Du kannst ihn langsam hochfacher 
etc.

>Nun stellt sich für mich noch die Frage, ob es denn einen Nachteil hat,
>die "externe" PWM mit dem NE555 zu verwenden?

Ja, man verliert Steuermöglichkeiten.

>Ich bekomme eine Softwareseitige PWM schon hin,

Nicht per Software, per Hardware und Timer, aber im Mikrocontroller.

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
Noch kein Account? Hier anmelden.