frgen zum usb-hub

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 12. März 2008, 20:00

Costi hat geschrieben:relais habe ich noch keine gekauft, sag mir was ich brauche und ich gehe los :lol:
Hallo Costi!

Also wenn du beim Conrad kaufst, dann stehen sowiso nur zwei Relais in akzeptabler Größe und Preisklasse zur Diskussion:

Denkhilfe für mich: :-)

Relais 1: http://www.conrad.de/goto.php?artikel=502852
5 V Nennspannung
165 Ohm Spulenwiderstand
Das gibt 5/165 = 0,030 A
5 V * 30 mA = 150 mW
Die restlichen 4 Volt können durch einen Widerstand verbrannt werden.
4 V / 0,030 A = 133,33 Ohm
4 V * 30 mA = 120 mW

Also bei diesem Relais würde ich einen 120 Ohm Widerstand verwenden.

Relais 2: http://www.conrad.de/goto.php?artikel=504393
5 V Nennspannung
178 Ohm Spulenwiderstand
Das gibt 5/178 = 0,028 A
5 V * 28 mA = 140 mW
Die restlichen 4 Volt können wieder durch den Widerstand verbraten werden.
4 V / 0,028 = 142,86 Ohm
4 V * 28 mA = 112 mW

Sieht gut aus. Auch hier kann man mit einem 120 Ohm Widerstand arbeiten.

Wenn möglich dann "Relais 2" nehmen. "Relais 1" ist eine gute Alternative. Dann brauchst du noch für jedes Relais einen 120 Ohm Widerstand und eine 1N4148 Diode als Freilaufdiode. Bei den Widerständen genügen 0,25 Watt-Widerstände. Aber wenn du 0,5-Watt-Widerstände kriegst, dann ist das auch nicht schlecht.

Um "einen" Motor "vor" und "zurück" und "ein" und "aus" schalten zu können, brauchst du zwei Relais. Vier Relais für zwei Motoren.

Code: Alles auswählen

WIDERSTAND KOHLE 0,5 W 5% 120R BF 0411
  Artikel-Nr.: 405140

DIODE 1N4148 500MW
  Artikel-Nr.: 162280

MINIATUR-RELAIS FRT5-DC05V 1A/30VDC
  Artikel-Nr.: 504393
oder:
RELAIS RY-05W-K
  Artikel-Nr.: 502852

Und auf solchen Platinen lässt sich das schön aufbauen und verdrahten:
LOCHRASTERPLATTE 790-5 HP 160 x 100
  Artikel-Nr.: 529618
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Donnerstag 13. März 2008, 00:39

erstmal:
@gerold: vielen dank fuer die ausfuerliche und muehvolle hilfe!

zwei relais pro motor? ich dachte ich muesste das so machen: http://www.strippenstrolch.de/1-4-6-polwender-1.html

ich hab uebrigens die motoren einfach so -ohne elektronische teile- angeschlossen und es funktioniert!

hier mein script um es zu steuern:
http://paste.pocoo.org/show/33218/
cp != mv
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Donnerstag 13. März 2008, 08:39

Costi hat geschrieben:ich hab uebrigens die motoren einfach so -ohne elektronische teile- angeschlossen und es funktioniert!
Hallo Costi!

Ja, der ULN2803 ist ein super Teil. Der kann bis zu 500 mA je Schaltausgang verkraften. Gehe aber davon aus, dass ein Motor unter Last viel mehr Strom zieht als ein freilaufender Motor.

Mit den Relais als Schalter bist du bis über 1 A sorgenfrei und der ULN2803 raucht dir nicht ab, wenn du mit dem Fahrzeug gegen eine Wand fährst oder etwas den Motor blockiert.

Bild

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Donnerstag 13. März 2008, 13:01

kann ich eigentlich um die geschwindigkeit des motors variieren zu koennen auf die pwm ausgaenge verzichten, in dem ich dem entsprechendem digitalen ausgang ganz schnell an und aus schalte. Damit der motor dan nicht so ruckelt "begratrigt" ein kondensator den strom??
cp != mv
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Donnerstag 13. März 2008, 13:38

Costi hat geschrieben:kann ich eigentlich um die geschwindigkeit des motors variieren zu koennen auf die pwm ausgaenge verzichten, in dem ich dem entsprechendem digitalen ausgang ganz schnell an und aus schalte. Damit der motor dan nicht so ruckelt "begratrigt" ein kondensator den strom??
Hallo Costi!

Das wird auf dem Board bereits über RC-Filter und Operationsverstärker für die DAC-Ausgänge versucht. Aber beim Glätten der Spannung geht ziemlich viel verloren. Du hast an den Außängen nicht mehr die Leistung zur Verfügung um die Motoren kraftvoll ansteuern zu können. Das müsste man wieder über eine Verstärkerschaltung ausgleichen. Davon verstehe ich nichts.

Außerdem kannst du die digitalen Ausgänge über den Computer nie so schnell ansteuern, wie es der Mikrocontroller, direkt auf dem Board, kann. Du würdest den Computer auslasten und jede kleine Verzögerung bei der Datenübertragung würde das Fahrzeug ruckeln lassen.

Aber damit du dich nicht darum kümmern musst, sind ja die zwei PWM-Ausgänge da. Nur darfst du mit diesen Dingern ***NIEMALS!!!*** ein Relais ansteuern. Du würdest damit in kürzester Zeit das Board und die Relais zerstören. Und wenn du Pech hast, dann bekommst du eine Stromwatsch'n, da so ein schnell ratterndes Relais eine ziemlich hohe Spannung produzieren kann.

Aber nicht verzagen. Du brauchst nur zwei Widerstände und einen Transistor den du statt dem Ein-/Ausschalter-Relais zum Schalten, über die PWM-Ausgänge, heranziehen kannst. Der Transistor muss nur stark genug sein um ca. 1 A schalten zu können.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Samstag 15. März 2008, 18:05

soooo, ich kan jetzt mein roboter mit sprachbefelen steuern (-;
http://paste.pocoo.org/show/33709/ (<- nicht gerade schoener code)

insgesamt mit nur ~150 lines python !


wenn ich servomotoren ansteuern will, muss ich dan meine pwm ports opfern, oder geht das ueber den digitalen output.
(ich muss ja immer impulse senden)
cp != mv
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Sonntag 23. März 2008, 03:06

omg!

es gibt eine viel einfachere und pythonischere methode um das k8055 board anzusprechen: python-k8055 [1]

wirklich intuitiv:

Code: Alles auswählen

In [89]: import k8055

In [90]: k = k8055.Board()

In [91]: k.
k.__class__              k._output                k.analog_output1         k.debounce1              k.reset                  k.set_analog2
k.__doc__                k._write                 k.analog_output2         k.debounce2              k.reset_counter1         k.set_debounce1
k.__init__               k.address                k.close                  k.digital_inputs         k.reset_counter2         k.set_debounce2
k.__module__             k.analog1                k.counter1               k.digital_outputs        k.reset_digital_outputs  k.set_digital_output
k.__str__                k.analog2                k.counter2               k.read                   k.set_analog1            k.set_digital_outputs

und dan habe ich noch eine frage:
ich habe den l298 motortreiber erfolgreich angeschlossen:
mit dem verbinden der vier inputs mit dem plus pol kann ich meine zwei motoren kontrolieren.
nun kann der k8055 nicht in plus bereich schalten?
im irc riet man mir zu einem "pull-up resistor"?


[1] http://sourceforge.net/projects/python-k8055/
cp != mv
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Sonntag 23. März 2008, 11:12

Costi hat geschrieben:nun kann der k8055 nicht in plus bereich schalten?
im irc riet man mir zu einem "pull-up resistor"?
Hallo Costi!

Schließe dazu einen 10 k Ohm Widerstand vom Eingang des L298 gegen +5 V. Dieser Widerstand verbindet den Eingang mit +5 Volt und setzt diesen damit auf HIGH. So lange der ULN2803 kein Signal bekommt, sperrt dieser. Wenn der ULN2803 ein Signal bekommt, dann zieht er den Eingang des L298 gegen GND. Da der Strom immer den Weg des geringsten Widerstandes geht, wird der Strom jetzt über den Widerstand direkt gegen GND geleitet. Es liegt kein HIGH mehr am L298 an. Der einzige Unterschied für dich ist, dass du im Programm umgekehrt schalten musst. Ein LOW im Programm ist ein HIGH am L298 und ein HIGH im Programm ist ein LOW am L298.

Bild

Wenn es nicht funktioniert, dann musst du den Widerstand etwas verkleinern. Das müsste man ausprobieren.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten