hi, eine frage, im tutorial werden 4 segmentanzeige mit multiplexverfahren betrieben. die einzelnen anzeigen werden dann mit transistoren durchgeschalten. ich hab im moment keine transistoren da (kenn mich mit transistoren leider überhaupt net aus, gibts da irgendwo eine gute zusammenfassung?). nun meine frage, kann ich die 4 anoden von den 4 anzeigen nicht direkt an den avr anschliesen und so ein und ausschalten?? wie kann ich mit einem transistor richtig große ströme steuern?? sagen wir mal in der richtung von 5A und 12V?? danke im voraus torben
@ torben (Gast) >transistoren leider überhaupt net aus, gibts da irgendwo eine gute >zusammenfassung?). Standardbauelemente > nun meine frage, kann ich die 4 anoden von den 4 >anzeigen nicht direkt an den avr anschliesen und so ein und >ausschalten?? Ja, wenn du Low-Current Anzeigen nimmst bzw. mit recht geringer Helligeit leben kannst. Siehe LED-Matrix. >wie kann ich mit einem transistor richtig große ströme steuern?? sagen >wir mal in der richtung von 5A und 12V?? Siehe Transistor MFG Falk
maximaler strom des gemeinsamen portpins darf 20mA (typisch) nicht überschreiten. sprich du hast bei 7-segment-anzeigen 3mA pro segment zur verfügung (worst case "88888"). zum schalten großer ströme wenn du 12V zur verfügung hast ganz klar mosfet-transistor. gate-ansteuerung ist einfach mit zwei kleinen transistoren zu machen und der mosfet erzeugt kaum verlustwärme.
danke für die antwort. wo sehe ich den bei den transistoren ab welcher spannung bzw strom die durchschalten?? danke!!
aber wie heisen die spannungen bzw ströme?? da steht nämlich alles nur in tabellen und auf english!
bei normalen mosfets mindestens 10v gatespannung für hohe ströme. maximal 20v (abhängig vom fet), du kannst die 12v also ganz einfach dafür nehmen. bei logic-level-fets reichen 5v, du kannst solche also direkt mit einem portpin ansteuern. ich nehm für sowas immer recht starke mosfets mit gate-treiber (besagter schaltung mit 2 kleinen extra-transistoren um den dicken brummer zu steuern). das funktioniert auch bei etlichen khz schaltfrequenz noch sehr gut. typen nehm ich meistens IRF3205, IRFP2907 oder IRFP064. IRFZ34/IRFZ44 ist auch gut für sowas, ist bei mir aber aus der mode gekommen. die gate-treiber sind meistens zwei BC547. wenn du keine mosfets willst schau dir darlington-transistoren an. die können mit einem kleinen basisstrom von 20mA große ströme schalten. mach ich aber nicht, ich favorisiere mosfets. daher weiß ich hier keine geeigneten typen, müßte ich erst suchen.
hi vielen dank. werd bei meiner nächsten reichelt bestellung auf jeden fall mal ein par transistoren mitbestellen. hab die anzeigen aber für den moment direkt angeschlossen. hätte eine Frage zum c code und zwar was sehr komisches, ist mir noch nie passiert: Folgender code #include <avr/io.h> #include <avr/oldmacros.h> unsigned char Segmentausgabe(unsigned char zeichen); int main(void){ unsigned char array1[]={"HALL"}; int i=0; outp(0xff, DDRD); outp(0xff, DDRB); //while(1){ //erste anzeige outp(0x20, PORTB); outp(Segmentausgabe(array1[i]), PORTD); outp(0x00, PORTB); //zweite anzeige outp(0x10, PORTB); outp(Segmentausgabe(array1[i+1]), PORTD); outp(0x00, PORTB); //dritte anzeige outp(0x08, PORTB); outp(Segmentausgabe(array1[i+2]), PORTD); outp(0x00, PORTB); //vierte anzeige outp(0x04, PORTB); outp(Segmentausgabe(array1[i+3]), PORTD); outp(0x00, PORTB); //} return 0; } die funktion segmentausgabe gibt im prinzip nur den code für die jeweiligen buchstaben aus. nun aber folgendes. wenn ich die kommentarzeichen vor der while schleife wegmache, dann läuft der compiler beim debuggen immer nur die mittlere codezeile von jedem der 4 blöcke ab. das "outp(0x20, PORTB);" aus dem ersten block überliest er total. wenn die while schleife aber weg ist, dann durchläuft er alles so we er soll. woran kann das liegen>??? vielen dank im voraus.
da fragst du am besten den hersteller des programms... vielleicht erwartet das auch eigentlich abgeschlossene kommentare?
Tut mir leid, mit dem Codefetzen kann ich wenig bis nix simulieren. Es fehlt die Angabe welcher AVR, welche AVR-GCC Version und welche Optimierungsstufe benutzt wird. Es fehlt in modernen WinAVR Versionen die Datei oldmacros.h. OK, das kann man durch ein Makro (s.u.) ersetzen, aber es ist unklar, ob dadurch das gleiche Simulationsergebnis erzielt wird wie bei dir, #define outp ( val, port ) (port) = (val) Die Definition der Funktion Segmentausgabe(unsigned char zeichen) fehlt auch. Deshalb nur der allgemeine Tipp: Schau dir im Debugger/Simulator an, wie das Disassemblerlisting aussieht. Sind die Anweisungen vollständig? Möglicherweise kann der Debugger/Simulator die Breakpoints nicht den C-Codezeilen zuordnen.
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.