hallo liebe uC-freunde, ich hab hier ein kleines problem. ich hab mir vorgenommen, mit der seriellen schnittstelle - als einstiegsübung zur elektronik :D - 8 (paralelle) kanäle zu schalten (H/L). also eigentlich nur einen 8bit serial/parallel converter. dazu habe ich mir ein 8bit schieberegister (74HC164) und nen NE555 geholt. der 555 gibt den takt entsprechend der baudrate (C1=1uF;R1=R2=4800 Ohm -> 100Hz) und das schieberegister verwandelt mir die 1en und 0en in High und Low. um zu verhindern, dass der HC164 mir die daten bis zum 8ten bit schiebt und danach auch löscht, wird die clock nach dem 8ten bit auf H gesetzt. das ,,auf H setzten" möchte ich mit einem seriellen ausgang DTR/RTS umsetzten. und nun zu dem was ich brauche: ein programm soll mir bei jeder daten ausgabe auf TxD senden - am besten mit schönem button von pin 1-8 - und DTR auf H setzten sobald es damit fertig ist. DTR wird mit CLK vom HC164 verbunden und friert die einstellung am ende des sendevorgangs ein, da die CLK nicht mehr taktet. aber da wäre noch ein problem: wenn DTR nicht auf High ist, ist es logischer weise auf Low :D. Low ist beim seriellen ausgang aber nicht masse, sondern -High. wie bekomm ich das in den griff? wie gesagt, bin ich in der e-technik noch nicht so ganz fit. ich weis auch, dass dieser aufbau nicht ideal ist. ja, uCs sind schneller, besser, genauer und vielleicht billiger, aber ich hab das jetzt schon so angefangen und ich werd ihn auch auf teufel komm raus fertigstellen. nix gegen uCs :P ich hoff auf eure hilfe und vllt auch generelle tipps zu dem thema (auch wenn viele den mist warscheinlich satt haben) mfg rainer
rainer schrieb: > dazu habe ich mir ein 8bit schieberegister (74HC164) und nen NE555 > geholt. > der 555 gibt den takt entsprechend der baudrate (C1=1uF;R1=R2=4800 Ohm > -> 100Hz) und das schieberegister verwandelt mir die 1en und 0en in High > und Low. ist ziemlich kompliziert. Ich würde einen AtMega8, oder einen tiny2313 nehmen rainer schrieb: > aber da wäre noch ein problem: wenn DTR nicht auf High ist, ist es > logischer weise auf Low :D. Low ist beim seriellen ausgang aber nicht > masse, sondern -High. wie bekomm ich das in den griff? dafür gibts PEgelwandler: zB Max232 der Aufbau sähe dann so aus: PC-RS232 <-> MAX232 <-> µC, via Uart der µC braucht dann nur ein kleines Programm, welches die Zeichen von der Uart entgegennimmt und die entsprechenden Ports einschaltet. Das hätte den oVorteil, du bräuchtst am PC kein spezielles Programm, sondern kannst jedes Termina-Programm (win zB: hyperterminal) nutzen
@ Rainer Wichtige Regeln - erst lesen, dann posten! * Groß- und Kleinschreibung verwenden usw.
ja :D, das hab ich auch schon tausend mal gelesen. ich weiss, dass es leichter ist. aber wie ich schon geschrieben habe, will ich es mit dem shiftregister umsetzten - zu übungszwecken. (bin trotzdem am überlegen, ob ich mir bei pollin für rund 20€ evaluationboardbausatz und attiny1323 kaufe)
Da kann ich nur eins sagen: Vergiss den NE555, oder ist das so ne Art Hausaufgabe? Abgesehen du wählst die Taktrate seeehr niedrig, hätte ich bedenken, dass der NE555 falsch geht (Widerstand/Kondensator). Evtl mal schauen, es muss doch noch mehr als eine taktbare Leitung an der RS232 geben, oder evtl Bit-Banging mode oder so?
Basti schrieb: > Da kann ich nur eins sagen: Vergiss den NE555, oder ist das so ne Art > Hausaufgabe? Abgesehen du wählst die Taktrate seeehr niedrig, hätte ich > bedenken, dass der NE555 falsch geht (Widerstand/Kondensator). > Evtl mal schauen, es muss doch noch mehr als eine taktbare Leitung an > der RS232 geben, oder evtl Bit-Banging mode oder so? Die serielle Schnittstelle hat 4 Ausgänge: TxD - serielle Daten DTR, RTS, CTS - H/L Ausgänge Ob ich die H/L als Taktgeber benutzen kann, weiß ich nicht da ich die maximale Hertzzahl nicht kenn. Das wär aber auch eine gute Lösung. Gibt es hier jemanden der derartige Programme schreiben kann?
Wenn du sowieso kein normgemässes serielles Protokoll fährst, schliesst CLK an TxD und SerialIN an RTS (oder DTR) an und spar dir den NE555. Man sendet dann jeweils ein 0x00 und das auf RTS (DTR) ausgegebene Bit wird ins Schieberegister geschoben. Du brauchst Vorwiderstände von sagen wir 10k bis 100k zwischen RS232 und dem Schieberegsiter, weil das mit 5V und die Schnittstelle mit bis zu 15V fährt. Willst du ein normgerechtes serielles Signal (eben damit man KEIN Programm schreiben muss) ist die Wahl des 74HC164/NE555 etwas ungünstig. Neben dem 8 bit Schieberegister braucht man da nämlich noch einen rücksetzbaren 8 bit Zähler der mit der 16-fachen Baudrate getaktet wird (74HC161). Geht die RS232 Leitung von MARK auf SPACE und ist bit 8 dieses Zählers gesetzt, wird bei ihm CLEAR aktiv. Der Ausgang Bit 3 ist das Taktsignal für das Schieberegister. Wird Bit 8 HIGH, wird der Zähler gestoppt. So kommst du mit einem NE555, einen 74HC161 und einem 74HC165 aus und kannst normale 8 bit Datenbytes senden mit 1 Startbit und 1-2 Stoppbits und niemand muss ein Programm schreiben.
Daran hab ich noch gar nicht gedacht. Ist ne echt gute Idee - einfacher und übersichtlicher. Danke Ich werd das mal ausprobieren, sobald ich die neuen Teile hab. MfG
Hallo nochmal, mein Vorhaben ist jetzt beendet. Das Ganze wurde weder mit uC noch mit Ne555 umgesetzt, sondern mit Labview. Über die serielle Schnittstelle kommt eine einstellbare Clock, die seriellen High und Lows und mit der Breakfunktion des TxD werden am Ende des Schiebens 8 Transistoren auf H gesetzt, um erst dann zu öffnen, wenn die Schieberei vorbei ist. Bei Gelegenheit werd ich den Aufbau hochladen - samt Programm, damit hier auch mal ein fertiger Thread ist. :D
So, hier die versprochenen Daten: -Hardwareaufbau -LabviewExe (benötigt den Labview RuntimeEngine 8.xx) Als CLK dient DTR, RTS gibt die seriellen Daten aus und TxD schaltet nach dem Senden in den Breakzustand(High), damit man über einen (Leistungs-)Transistor die Verwirrung während des Schiebens vermeiden kann. Die seriellen Daten kann man mittels Klickschalter aktivieren -ich weiß - für Echtzeitsteuerung nicht grade perfekt, dafür beträgt die Sendezeit aber min. 8ms. Wenn es noch Fragen oder Verbesserungsvorschläge gibt, nehme ich die gerne an. Und danke, dass ihr mir nicht gleich ein Programm hingeworfen habt. Durch das Selbermachen bin ich um einiges schlauer geworden.
Upps, Sorry für den Doppelpost aber ich seh grad noch einen Fehler im Schlatplan. Es müssen natürlich B und *CLR an High und nicht A.
Schön, dass es funktioniert. Burkhard Kainka hatte in einem seiner Bücher (vorm "erschwingliche Mikrocontroller"-Zeitalter) Schaltungen mit Logik-Bausteinen realisiert, die Daten über die serielle Schnittstelle versendet haben. Die brauchten nicht mal Handshake-Leitungen.
Hallo, jetzt brauch ich doch nochmal Hilfe. Ich hab jetzt 2 H-Brücken an die Schnittstelle angeschlossen, allerdings mit externer Stromversorgung, siehe Anhang. Die BC337 sollten eigentlich bis zu 0,5A halten. Als ich aber messen wollte, wieviel Strom jetzt wirklich fließt, sprich Messgerät dazwischen gehängt, sind sie mir ziemlich schnell weggedampft. :( Als Stromquelle hatte ich einen Trafo mit max. 18V und 800mA(liegt etwa da schon der Fehler?) Nun meine Fragen: 1) Wieso sind alle 4 Transistoren (einer Brücke) durchgebrannt? Zieht das Messgerät mehr Strom als die Schaltung, denn mit den Motoren hat es - wenn sie auch ziemlich schwach waren - gut geklappt? Und warum alle Vier, es leitet ja immer nur ein Zweig und ich hatte ja nicht alle beide an? 2) Normalerweise müssten die Motoren doch ganz normal laufen (bei einem geschlossenen Brückenzweig), warum tun sie das bei mir nicht? 3) Hilft es wenn ich die Transistoren der H-Brücke parallel schalte, um mehr Strom zu ertragen? Danke im Voraus Rainer
Eine überaus seltsame Schaltung: - Kollektor direkt an 74LS04 - wo ist der (sichere) HIGH-Pegel, wenn der Transistor sperrt? Ja, ich weiß, TTL und LS-TTL sind bei offenem Eingang HIGH, aber das nutzt man nicht in einer Schaltung! - Keinerlei Basisvorwiderstände! Arme Transistoren und armer LS164 - H-Brücke mit NPN auf beiden Zweigen und dann auch noch parallel geschaltet Transistoren (z.B. Q11 und Q16)? Und, alles wieder ohne Vorwiderstände an der Basis. Selbst wenn welche drin wären: die jeweils oberen Transistoren können nicht auf 12V schalten, höchstens auf 4,3V. - was habe ich auf die Schnelle alles nicht gesehen? Meine Empfehlung: delete all und fange nochmals von vorne an.
Hi HildeK, ich weiß, dass ich von der Sache noch ziemlich wenig Ahnung habe und vermutlich viel falsch mache, aber anstatt mir zu raten, alles was ich aufgebaut habe, wieder abzubauen, könntest du mir vielleicht ein paar Tipps geben, wie ich es besser machen kann. Nicht, dass ich deinen Rat nicht schätze - er sagt mir, dass meine Schaltung noch ziemlich verbesserungswürdig ist - aber ich bin eben ein Neuling und schon froh über die ansteuerbaren LEDs. Die Vorwiderstände hab ich weggelassen - ich weiß auch nicht wozu die genau gut sind - Jetzt wäre es eben noch ein toller Fortschritt, die 2 H-Brücken mit ausreichend Stromstärke zu betreiben. Rainer
rainer schrieb: > könntest du mir vielleicht ein paar > Tipps geben, wie ich es besser machen kann. Hab ich doch. Ich habe die notwendigen Basisvorwiderstände erwähnt (mit Begründung, wer sich nicht darüber freuen wird), ich sagte, dass die oberen Transistoren kein Ausgangssignal bis 12 liefern können (sie werden ja an der Basis von max. 5V angesteuert und der Emitter liegt immer tiefer), dass der Q11, da seine Basis hart mit der Basis von Q16 verbunden ist, nicht wirklich so arbeiten wird, wie du das wolltest. Dessen Emitterspannung wird kaum über 0V hinausgehen. Zugegeben, es ist mir zuviel Aufwand, deine Schaltung neu zu zeichnen. Aber ich suche mal selber ein paar Beispiele zusammen: Beim Ansteuern eines TTL-Gatters mit einem Transistor ist an dessen Kollektor ein Widerstand nach +5V notwendig (zumindest sehr empfehlenswert). Bei CMOS-Gattern absolut notwendig. H-Brücke, geht auch mit NPN und PNP-Transistoren anstatt nMOS und pMOS: http://s-huehn.de/elektronik/fahrtregler/fahrtregler.htm Wenn du in dem Bild die Eingänge über R8 und R10 bzw. R9 und R11 miteinander verbindest, so kannst du daran die Signale von U1a und U1b von deinem Bild anschließen. H-Brücken gibt es auch integriert: http://www.mikrocontroller.net/articles/H-Br%C3%BCcken_%C3%9Cbersicht Oder auch: Beitrag "Verständnisfrage zu der H- Brücke" Beitrag "Warum PNP und NPN in H-Brücke?" Basiswiderstand (dort ist auch ein Beispiel drin, wie LEDs beschaltet werden): http://www.mikrocontroller.net/articles/Basiswiderstand Viele weitere Ergebnisse liefert z.B. die Forensuche.
Cool, danke für die Antwort :), werd mich mal dranmachen und mein Halbwissen aufstocken. Danke nochmal Rainer
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.