mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik PNP als Schalter: widersprüchlich. Aber konkret gefragt


Autor: Koko Lores (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich taste mich gerade an eine Transistorschaltung ran, und ziehe diese 
'Quellen' zu rate:

Hier die Last zwischen Collector und GND:
Beitrag "pnp transistor, wo die last" (1)

Hier die Last zwischen VCC und Emitter:
http://www.digitalhilfe.de/Transistor.htm (2)

Die Frage ist, wo die Last jetzt 'richtig' hingehört. Ich vermute wie 
bei (1).

Die Last ist ein Modellservo an 5V, ich habe einen PNP BC807-40 (SMD).
http://www.nxp.com/pip/BC327.html (stimmt so).

Steuerstrom müsste bei 4-5V für 400mA Strom etwa 4-5mA betragen, wenn 
ich das Datenblatt richtig lese.

D.h. wenn die Basis gegen GND geschaltet wird, fließt der Steuerstrom, 
und somit auch der Last-strom.

Was beeinflußt jetzt die unterschiedliche Beschaltung aus den Links? 
Wenn die Last zwischen GND und Collector liegt, ist der 
Emitter-Basis-Strom I_EB=(VCC-0.7V)/R_Basis !?

Aber wenn die Last zwischen VCC und Emitter liegt, fällt dort ebenfalls 
eine Spannung ab (als ohmsche Last annehmbar?), und deswegen klappt das 
mit dem Steuerstrom nicht mehr?

Vielen Dank!

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Link 2 ist für mich in erster Näherung falsch.

Und hier gibt es bestimmt auch einige Anleitungen, wie man einen 
PNP-Transistor ansteuert.

Durch den kleinen Transistor würde ich den Strom nicht unbedingt 
schicken, aber ...

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nehme am Tiny13 den BC327 (in TO92) mit etwa 10mA Basisstrom in 
Emitterschaltung (Last an Kollektor) und schalte damit die 
Betriebsspannung billiger Conrad-Servos nur während der 
Positionsänderung ein. Geht prima und spart Strom. Die Servos bewegen 
(austarierte) Kameras (also keine Rückstellkräfte durch Schwerkraft) und 
lösen sie aus.

...

Autor: Koko Lores (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, danke für die Bestätigung!
D.h. der Basiswiderstand tatsächlich <1kOhm bei 5V VCC?

Und Hannes: Wie erzeugst Du das Servosignal? Ich komme nicht ganz klar, 
vielleicht könntest Du mal einen Blick hier drauf werfen?
Beitrag "AVR: 8 Bit PWM und Interrupt synchronisieren?"
Das wäre toll, wenn ich das heute noch hinbekomme. Gleich erstmal den 
Transistor 'anbauen'.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wie erzeugst Du das Servosignal?

Sorry, ich muss mich korregieren, das war mit Tiny15 für ein Servo und 
Mega48 für mehrere Servos. Tiny13 hatte ich bei einer Kamerasteuerung 
für eine mit Optokopplern nachgerüstete Yakumo-Mega-Image4 eingesetzt. 
Da gab es aber keine Servos.

Servoimpuls mit Tiny15:
Bei Tiny15 mit 1,6MHz erzeugt der OC-Interrupt von Timer1 (Vorteiler 16) 
die Impulsdauer. Das Schalten des Impulses geschieht "von Hand" (also 
per Programm) in der Timer-ISR. Den Impulsabstand erzeugt Timer0.

Mit Tiny13 würde sich anbieten:
4,8MHz, Vorteiler 64 für Timer macht 75kHz Timerzähltakt (100kHz wäre 
schöner), das sind Zahlenwerte von 75..150 für 1,0..2,0ms.
Per OVF-Interrupt kann mittels Zähler der Impulsabstand (halbwegs genau) 
gemessen/gesteuert werden und der Impuls ausgelöst werden (Impuls 
beginnt daher immer bei Timerstand 0). Der OCR-Interrupt schaltet den 
Impuls dann bei Timerstand 75..150 wieder ab. Eine Kollision der beiden 
Interrupts ist also nicht möglich.

Für die Kamerasteuerung existieren wegen Plattenschaden leider keine 
Dateien mehr. Macht aber nix, das Teil wird sowiso nicht mehr gebraucht.

...

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe erst jetzt den Link im Link verfolgt und weiß jetzt auch, warum ich 
bisher nichts von Deinem Projekt bemerkt habe. Das ist einmal C (ich 
werkele nur in ASM, für C bin ich zu blöd) und andererseits der Wunsch 
"bitte mal nachsehen", da halte ich mich inzwischen zurück, solche 
Wünsche im Betreff halten mich inzwischen vom Lesen des Threads ab.

...

Autor: Koko Lores (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Per OVF-Interrupt kann mittels Zähler der Impulsabstand (halbwegs genau)
>gemessen/gesteuert werden und der Impuls ausgelöst werden (Impuls
>beginnt daher immer bei Timerstand 0). Der OCR-Interrupt schaltet den
>Impuls dann bei Timerstand 75..150 wieder ab. Eine Kollision der beiden
>Interrupts ist also nicht möglich.

DANKE!

Im ersten Versuch hatte ich ja praktisch den T/C in der ISR nochmal per 
Software abgebildet. Völlig bescheuert!
Ich muß ja nur das OCR anpassen. Das muß ich gleich ausprobieren!


> "bitte mal nachsehen"
Das ist natürlich eine direkte Aufforderung, und vermutlich etwas 
abschreckend. Kann ich verstehen, habe für diese Frage auch schon auf 
andere Weise versucht zu vermitteln, daß es sich nicht um eine diffuse 
Frage handelt, die möglicherweise schon an anderer Stelle beantwortet 
wurde. Bei sowas sehe ich nämlich auch eher nicht rein.

Autor: Koko Lores (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, sowohl Transistor als auch Software funktionieren zur 
Abwechselung mal nach Plan!

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es freut mich, dass es nun läuft.

Das "bitte mal nachsehen" gab es in letzter Zeit öfters mal, nach jedem 
gelösten Problem traten dann meist drei neue Probleme auf, worauf das 
gesamte Projekt vom Forum gemacht werden sollte... Das ist irgendwie 
nicht mein Ding. Auf konkrete Fragen antworte ich gerne mal, falls ich 
dazu in der Lage bin, anderer Leute Arbeit mache ich aber nicht.

...

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nochwas:
Der OVF-Int zählt die Impulspause und startet den Impuls.
Der OCR-Int schaltet den Impuls wieder aus.

Nun könnte man im OVF noch managen, ob der OCR-Int überhaupt stattfinden 
soll. Dies ist aber überflüssig, denn wenn der OCR-Int "jede Runde" den 
Portpin (Impuls) ausschaltet, der (dieses mal) gar nicht eingeschaltet 
war, dann passiert auch nix, "aus"er (unerlaubte Steigerung von "aus") 
als "aus" geht nicht... Und der Verwaltungsaufwand sinkt.

Deine Aktivität beschränkt sich also darauf, in der OVF-ISR zu prüfen, 
ob jetzt (und ob überhaupt) ein Impuls ausgelöst werden soll und (falls 
ja) den Impuls zu starten. Selbst das Setzen der Impulsdauer kann die 
Mainloop machen, wenn verhindert wird, dass das während des aktiven 
Impulses geschieht.

Du kannst also den Transistor-Steuerport (für Servo-Stromversorgung) als 
Flag benutzen, ob Impulse generiert werden sollen. Die Mainloop setzt 
dann bei Bedarf den Impulsende-Termin in OCR, schaltet den Transistor 
ein und setzt ein Timeout (halbe Sekunde?), das vom OVF-Int (oder 
Timer-synchronisierter Mainloop) heruntergezählt wird und den 
Transistor-Port zurück schaltet.

Wenn Du in der OVF-ISR noch ein Flag für die Mainloop setzt, kannst Du 
in der Mainloop einen Zähler als Uhr laufen lassen. Durch Verwenden der 
Sleep-Funktion (Idle-Mode) kannst Du die Mainloop auf den OVF-Int 
synchronisieren, also nur einen Mainloop-Durchlauf nach jedem OVF-Int 
zulassen. Damit läuft Deine Mainloop in einem exakten Zeitraster, was 
das Programmieren von Zeiten und Aktionen stark vereinfacht. Die 
Mainloop wird also alle 16k Takte für eine Runde "angeschubst" und der 
AVR pennt nach getaner Arbeit bis zum nächsten Int (mit vom OVF 
gesetztem Sync-Flag). Und die zur Verfügung stehenden 16k Takte müssen 
erstmal durch sinnvolle Arbeit "verprogrammiert" werden, denn 
Warteschleifen braucht man in diesem Programmierstil (im Normalfall) 
nicht.

Ein Tip noch:
Setze einen Widerstand von etwa 1k in die Impulsleitung zum Servo. Das 
schützt den Portpin vor Überstrom bei Programmierfehlern (Impuls bei 
fehlender Servostromversorgung).

Viel Erfolg

...

Autor: Koko Lores (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, Du bist nett, so ausführlich. Danke!
Ich werde das morgen in aller Ruhe nachvollziehen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.