Wildtierfotofalle mit IR-LED Scheinwerfer

Fragen zu Schaltungen, Elektronik, Elektrik usw.

Moderator: T.Hoffmann

Crafty-Catcher
Super-User
Super-User
Beiträge: 71
Registriert: Di, 21.11.06, 18:18
Wohnort: Lippstadt
Kontaktdaten:

Sa, 07.11.09, 22:45

Hallo Community,
ich hoffe ihr könnte mir wieder einmal so super weiterhelfen wie sonst immer. Ich habe folgendes Szenario, welches nur bedingt etwas mit LEDs zu tun hat. Ich habe einen Bewegungsmelder von Tchibo auseinandergenommen, so einer mit 4 AA Batterien und 6 LEDs. Die Dinger dienen meist als Notlicht in Fluren und Treppenhäusern. (Das gibts auch nicht aktuell bei Tchibo, sondern ich habe es mal vor einer Weile geschenkt bekommen.) Auf jeden Fall möchte ich gerne das Signal des Bewegungsmelder abgreifen um einen IR-LED Scheinwerfer einzuschalten und eine Kamera zu aktivieren. Das ganze soll als Fotofalle für Wildtiere dienen.

Der Bewegungsmelder schaltet die 6 LEDs für ca. 30 Sekunden an, sobald eine Bewegung festgestellt wird, werden innerhalb der 30s weitere Bewegungen wahrgenommen, so bleiben die LEDs bis 30s nach der letzten Bewegung an. Die 6 LEDs sind alle mit eigenen SMD Widerständen in die Schaltung integriert. Auf den Widerständen steht "101" soweit ich das mit einem umgedrehten Fernglas entziffern kann. (Habe leider keine Lupe) Da die Schaltung des Bewegungsmelders noch komplexer ist, möchte ich gerne einfach das Signal nutzen, dass an den LEDs anliegt. Ich würde 5 LEDs entfernen und eine als Statusled beibhealten. Das Problem besteht nicht im einschalten des IR-Scheinwerfers, da ich ja einfach ein Minirelais in den Schaltkreis anstelle der 5 LEDs hängen könnte. Das Problem ist, dass ich für den Kamerauslöser ein Modellbauservo verwenden möchte, welches hier noch rumflog. Um das Servo anzusteuern braucht es normalerweise eine Schaltung, die ein PWM Signal ausgibt, für meine Version reicht die Chuck-Norris-Variante aber aus. Ich brauche das Servo lediglich mit der Betriebsspannung versorgen und dann das Signalkabel für einen Sekundebruchteil mit dem Pluspol meiner Spannungsquelle verbinden um die Kamera zu aktivieren. Um die Kamera wieder zu dekativieren brauche ich nochmal den gleichen Impuls.

Daher meine Frage an euch.
1. Gibt es was schöneres als ein Relais um den IR Scheinwerfer einzuschalten (der braucht ca. 2 W)
2. Wie bekomme ich aus dem Dauersignal der LEDs vom Bewegungsmelder, zwei einzelne kurze Signale, eines beim Aufleuchten der LEDs und eines beim Erlischen der LEDs des Bewegungsmelders?

Viele Grüße,
Crafty-Catcher

P.S. Der Bewegungsmelder hat einen integrierten Dämmerungsschalter, habe die Fotodiode auch schon gefunden, da der Bewegungsmelder in meinem Fall aber immer aktiviert sein soll, müsste es doch reichen die Fotodiode zu entfernen, da bislang der Bewgungsmelder nur anspringt wenn es dunkel ist. Entferne ich die Diode müsste es doch also quasi immer dunkel sein oder?
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Sa, 07.11.09, 23:52

Gibt es was schöneres als ein Relais um den IR Scheinwerfer einzuschalten
Na klar, ein Transistor (Mosfet).
Wie bekomme ich aus dem Dauersignal der LEDs vom Bewegungsmelder, zwei einzelne kurze Signale
Da gibt es verschiedene Möglichkeiten. Am einfachsten wäre es (mal wieder) mit einem µC. Damit kann man sehr einfach beide Flanken (steigend und fallend - sprich ein- und ausschalten) auswerten. Mit passenden CMOS-ICs (monoflop) müsste es eigentlich auch gehen. Noch einfacher wäre es höchstens einen NE555 als astabilen Multivibrator zu schalten, der einfach (solange er das 'An' Signal vom Bewegungsmelder kriegt) alle 20 sek einen kurzen Puls erzeugt. Wenn längere Zeit Bewegung ist, ergibt das dann natürlich auch mehr Aufnahmen.
müsste es doch reichen die Fotodiode zu entfernen
Besser durch einen hochohmigen Widerstand ersetzen. Sonst hängt ggf. das Signal 'in der Luft' und macht irgendwas unkontrolliertes....
Crafty-Catcher
Super-User
Super-User
Beiträge: 71
Registriert: Di, 21.11.06, 18:18
Wohnort: Lippstadt
Kontaktdaten:

So, 08.11.09, 08:35

Hey cool, danke für die Tipps. :)
Ich hab noch eine Ergänuung zu dem Auslöserservo. Das ganze löst eine digitale Fotokamera aus, auf der das CHDK läuft, was beim Start der Kamera anfängt Bilder zu machen, bis die Kamera wieder ausgeschaltet wird, von daher sollte das Servo wirklich nur zur Beginn und zum Ende des Impulses betätigt werden, da sonst Aufnahmen durch unnötige Start- und Ausschaltphasen verloren gehen.

Viele Grüße,
Crafty-Catcher

P.S. Die Mosfets sind hochinteressant, nachdem was ich gelesen haben. Ich habe dazu noch eine Frage Ugs ist die Steuerspannung, ist UDS die maximale Spannung die an D und B anliegen darf und IC25 der maximale schaltbare Strom? Wenn ich einen Mosfet mir Ugs 2V habe, um wieviel Volt darf die Steuerspannung diesen Wert überschreiten, ohne das der Mosfet darunter leidet? Edit: Das hat sich schon erledigt, dank eines Datenblattes das ich gefunden habe.
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

So, 08.11.09, 13:04

nur zur Beginn und zum Ende des Impulses betätigt werden, da sonst Aufnahmen durch unnötige Start- und Ausschaltphasen verloren gehen.
Das versteh ich nicht... Was soll jetzt genau passieren? Ein 'Einschaltpuls' am Anfang und eine Ausschaltpuls (ist das der gleiche? Oder ist der 'negativ'...) am Ende?
Crafty-Catcher
Super-User
Super-User
Beiträge: 71
Registriert: Di, 21.11.06, 18:18
Wohnort: Lippstadt
Kontaktdaten:

So, 08.11.09, 13:32

Hi Borax,
da habe ich mich missverständlich ausgedrückt, das ist der gleiche Impuls.

Viele Grüße,
Crafty-Catcher
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

So, 08.11.09, 17:12

Wie schon gesagt, am einfachsten (schaltungstechnisch) wäre ein µC (z.B. AtTiny13 o.ä.). Das zweite was mir einfällt sind zwei Monoflops, wobei einer auf eine steigende Flanke reagiert (also beim 'Einschalten') und ein anderer auf eine fallende Flanke (also beim 'Ausschalten'). Beide erzeugen nur einen kurzen Puls, der jeweils das Servo steuert.
Bernd_Eppinger
Mini-User
Beiträge: 4
Registriert: Mi, 11.11.09, 20:13

Do, 12.11.09, 23:28

Hallo, Crafty-Catcher,

falls Du keinen Mikrocontroller programmieren willst, kann man eine Erkennung von steigenden und fallenden Flanken auch recht einfach mit Standard CMOS-Gattern bauen. Die Details (Typen der Gatter, Pegelanpassung, Erzeugung der Versorgungsspannung), die auch bei einem Mikrocontroller zu beachten wären, kann ich Dir nicht liefern, weil ich Deine Umgebungsbedingungen nicht kenne: Versorgungsspannung, Eingangspegel, Ausgangspegel für das Servo, Treiberleistung.

Hier das Prinzip:
Prinzip auf Gatterebene
Prinzip auf Gatterebene
image-01.png (1.01 KiB) 9727 mal betrachtet
Das Dreieck mit dem Kringel und dem stilisierten Hysterese-S ist ein "Schmitt-Trigger-Inverter", die halbe Semmel mit dem Pluszeichen ist ein "Exclusiv-Oder Gatter" oder EXOR.

Die Schaltung erzeugt einen LOW-Impuls am Ausgang, wenn sich der Logikpegel des Eingangs ändert.

An Deiner Stelle würde ich aber nochmal überdenken, ob ich meine Kamera wirklich auf diese Weise ansteuern will. Wenn nämlich ein einziger Puls verloren geht, dann ist ab diesem Zeitpunkt Ein- und Ausschalten vertauscht, d.h. die Kamera filmt alles, was sie nicht soll, und die wichtigen Dinge werden herausgeschnitten. Ein Puls könnte z.B. verlorengehen, wenn Dein Bewegungsmelder nur ganz kurz ausschaltet, sodaß Einschalt- und Ausschalt-Puls zusammenfallen. Wenn man das verhindern will, werden kompliziertere Schaltungen oder eben doch Mikrocontroller nötig. Die Strategie könnte dann sein,
  • Immer eine Mindest-Pulslänge zu erzeugen, oder gar keinen Puls.
  • Nach dem Puls eine Mindest-Zeit warten, bis die Schaltung wieder scharf ist.
  • Den Zustand der Kamera mitrechnen, z.B. mit einem T-FlipFlop (oder D-FlipFlop mit Inverter).
  • Einen Puls (und die nachfolgende Pause) immer genau dann erzeugen, wenn der Ausgang des FlipFlops nicht mit dem Eingang der Schaltung übereinstimmt.
Maßnahmen gegen verlorene Pulse
Maßnahmen gegen verlorene Pulse
image-02.png (4.03 KiB) 9727 mal betrachtet
Wie gesagt, eine andere Kamera-Ansteuerung zu verwenden, z.B. falls die Kamera einen Anschluß für einen Fernsteuer-Kontakt hat und filmt, so lange der Kontakt geschlossen ist, erschiene mir einfacher und zudem zuverlässiger.


Grüße,

Bernd
Crafty-Catcher
Super-User
Super-User
Beiträge: 71
Registriert: Di, 21.11.06, 18:18
Wohnort: Lippstadt
Kontaktdaten:

Fr, 13.11.09, 18:42

Hi Bernd,
danke für deine tollen Ausführungen. Ich habe mich eigentlich schon für den µC entschieden, habe mir schon meine Reicheltbestellung zusammengestellt und mir einiges angelesen. Ich finde das Thema sehr spannend und möchte gerne mehr darüber lernen, daher werde ich diese Lösung vorziehen. Vielen dank nochmal an Borax, der mir auch per PN zur verfügung stand.

Ich werde in diesem Thread meine Fortschritte weiter dokumentieren. Es kann dabei jedoch mal längere Zeit keine Updates geben, da ich öfter aus beruflichen Gründen ein paar Tage unterwegs bin und dann keine Zeit habe weiter zu "basteln".

Ich habe mir bei der großen Bucht ein paar IR Dioden bestellt. Ich hätte sie gerne bei Lumitronix gekauft, leider haben die dort die "falsche" Wellenlänge und Lumintronix kann mir in der geringen Menge (100Stck.) keine 850nm Dioden bestellen. Danke nochmal an Lumitronix für den sehr freundlichen Mailkontakt!
Die Dioden der Bucht eignen sich zu 50% habe insgesamt 100 Stück und drei verschiedenen Sorten, da ich kein gutes Angebot in ausreichender Menge finden konnte. 50 von den Dioden haben eine Wellenlänge von 870nm und können laut Datenblatt mit 1,5V und 100mA betrieben werden. Ich halte das ja für einen ziemlich hohen Strom und mein Gefühl hat mir recht gegeben, die LEDs werden warm und liefern dabei nichtmal genug Strahlung für den Kamerasensor. Der Sensor reagiert besser auf die übrigen IR Dioden mit 850nm und 50mA bei 1,5V, leider sind das insgesamt nur 50 Stück. Die "Leuchtleistung" wird vermutlich nicht ausreichen, aber den Scheinwerfer kann ich später ja immernoch aufrüsten. Ich werde das ganze erstmal so zusammenbauen.

Als µC werde ich den AtTiny13 verwenden und mir erstmal ein enstprechenden Board zum programmieren bauen. Der Scheinwerfer wird später per Mosfet Transistor eingeschaltet werden.

Viele Grüße,
Crafty-Catcher

P.S. Ich habe am Sonntag bei Reichelt bestellt, waren ne ganze Menge Teile, aber leider sind die 100nF Folienkondensatoren wohl aus und so wird mein Paket erst morgen (ohen Kondensatoren) verschickt. Ohne die Kondensatoren zieht sich das ganze aber noch was, da ich den AtTiny nicht programmieren kann.
Crafty-Catcher
Super-User
Super-User
Beiträge: 71
Registriert: Di, 21.11.06, 18:18
Wohnort: Lippstadt
Kontaktdaten:

Mo, 23.11.09, 21:04

Sorry für den Doppelpost. Aber ich finde es ist Zeit für ein kleines Statusupdate.
Die Teile von Reichelt sind gekommen, allerdings waren die 33nF Kondensatoren aus und nicht die 100nF - Glück gehabt.

Ich habe mir damit erstmal den Progger für den AtTiny13 gebastelt und zwar mit der Anleitung von ELO dort sind auch die Teile beschrieben die man braucht. Wenn man nur den Progger will reichen aus der dort angegebenen Liste die folgenden Bauteile:
ELO hat geschrieben:1 Lochrasterplatine
1 IC Sockel DIL24
1 Mikrocontroller ATtiny13
1 DB9-Buchse
1 5V-Spannungsregler 2950
2 Dioden 1N4148
1 Kondensator 100 nF
2 x 100 kΩ
1 x 1 kΩ
Den Schaltplan findet man dann auf dem Screenshot von der Software. Die kann man sich auch gleich zum proggen runterladen.
Da es nicht dransteht hier noch die nötige Pin Belegung des 9 Pin Steckers (in gleicher Reihenfolge wie auf dem Schaltplan angegeben):
4 DTR
8 CTS
3 TXD
2 RXD
5 GND
7 RTS
Die Zahlen stehen immer dran wenn man sich die Stecker / Buchsen einmal genau anschaut, meist ist das so klein, dass man ne Lupe oder zumindest ne gute Lampe benötigt um das lesen zu können, aber es steht dran.

Wenn man alles zusammen gelötet dann sieht es auf jeden Fall besser aus, als das was ich hier fabriziert habe *hüstel*:
Progger.jpg
Progger.jpg (14.91 KiB) 9643 mal betrachtet
Ich habe mir da noch einen Taster auf das Board gelötet, der verbindet auf Tastendruck den RES Ausgang vom AtTiny13 mit GND, so muss man später nicht immer eine Brücke stecken.
Ist das ganze fertig kann man das mit einem ECHTEN 9 PIN Sub-D Anschluss des PCs verbinden und sich die Software runterladen. Den Link findet man direkt unter dem Screenshot in der obigen Anleitung. Auch wenn da was von "Update" dran steht, da ist eigentlich alles drin was man braucht. Programmieren könnt ihr euren AtTiny dann mit der Datei "LPmikroISP.exe" bzw. ihr könnt damit bei gedrückten Taster die Hex Dateien auf den µC laden. Was ich noch nicht ganz verstanden habe wie ich die "LPmikros.exe" komplett zum laufen bekomme. Wer da nen Tipp hat immer her damit.
Die Hex Dateien könnt ihr mit dem AVR Studio (ziemlich weit unten auf der Seite und man muss sich registrieren) erstellen. Dort könnt ihr Programme in Assembler oder C schreiben, wenn ihr lieber mit BASCOM arbeitet könnt ihr euch auch die BASCOM AVR Demo von dieser Seite laden. Sobald ihr die Hex Dateien mit Hilfe des "Build" oder "Compile" Button erstellt habt, könnt ihr diese auf dem Upload Tab der Anwendung "LPmikroISP.exe" auswählen und bei gedrücktem Taster wird euer AtTiny13 programmiert. Ein paar Testprogramme sind auch auf den Seiten von Elo enthalten, der Button "Nächster Artikel" auf der Elo Seite erklärt das ganz auch nochmal genauer.
Sind die ersten Tests erfolgreich so könnt ihr euch mit der Programmiersprache und ganz wichtig dem Datenblatt des AtTiny13 auseinandersetzen, solltet ihr dann zu dem Punkt kommen, wo ihr eine PWM proggen wollt und euch diese Seite oder diese oder diese oder diese oder diese nicht weiterhilft, dann seit ihr genau da wo ich gerade stehe. Ich denke ich habe einfach irgend einen Kondensator vergessen, aber mein Graupner Servo lässt sich immer nur in eine Richtung drehen. (Bin für jeden Tipp wie immer dankbar, werde aber jetzt erstmal meine Assembler Kenntnisse ausbauen.)

Ich habe dann einfach mal den IR Scheinwerfer zusammengebaut, der leider trotz 850nm nicht die gewünschte leistung für meine IXUS 70 bringt.
IR.jpg
IR.jpg (27.98 KiB) 9643 mal betrachtet
Vielleicht reichts für die Dämmerung aber nicht bei völliger Dunkelheit, das wird sich dann in der Praxis zeigen.

Viele Grüße,
Crafty-Catcher
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Fr, 27.11.09, 13:40

Was ich noch nicht ganz verstanden habe wie ich die "LPmikros.exe" komplett zum laufen bekomme.
Weiß ich auch nicht, aber die meisten verwenden Ponyprog zum Schreiben der Hex Dateien auf den µC.
Wegen dem Servo:
Ich weiß nicht, was der genau braucht... PWM mit exakt 100Hz?
Oder hast Du das Problem schon gelöst?
Synthy82
Hyper-User
Hyper-User
Beiträge: 1956
Registriert: Do, 05.04.07, 15:15
Wohnort: Hamburg
Kontaktdaten:

Fr, 27.11.09, 15:47

Crafty-Catcher hat geschrieben: Ich habe dann einfach mal den IR Scheinwerfer zusammengebaut, der leider trotz 850nm nicht die gewünschte leistung für meine IXUS 70 bringt.
Haste die Ixus auf Infrarot umgebaut oder umbauen lassen? Bei den normalen Kameras ist ein Filter drin, der das Infrarot nicht zum Chip durchlässt.
Crafty-Catcher
Super-User
Super-User
Beiträge: 71
Registriert: Di, 21.11.06, 18:18
Wohnort: Lippstadt
Kontaktdaten:

Fr, 27.11.09, 16:37

@Borax. Ich brauche eine PWm Signal, dass sich alle 20ms wiederholt also 50Hz und das Signal muss dabei zwischen 1 und 2ms lang sein.
Das Problem konnte ich noch nicht lösen, vor allem wegen dem Zeitmangel. Mal sehen ob ich der Sache morgen näher komme.
Für Ponyprog brauch ich aber eine anderen Schaltung als Programmer oder?

@Synthy82 Genau da wird sicher das Problem liegen, in der Zwischenzeit habe ich auch sowas gelesen. Ich habe sie nicht umbauen lassen, ein Teil der Infrarotstrahlung kommt auf jeden Fall durch, da ich Gegenstände im Abstand von einigen cm auch in völliger Dunkelheit fotografieren kann. Umrisse kann man bei ca 2m noch so gerade erkennen, aber mehr auch nicht. Die Kamera ist bei meiner Bastelei aber Großteils austauschbar, daher werde ich mal schauen an was ich noch so drankomme. Für die ersten Tests muss erstmal die IXUS 70 herhalten, bis die Ansteuerung funktioniert.

Viele Grüße,
Crafty
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Fr, 27.11.09, 17:00

Ich hab mich mal schlau gemacht...
Einigkeit herrscht darüber, dass das Signal zwischen 1ms und 2ms lang sein soll mit 'Servo=Mitte' bei 1.5ms. Über die Wiederholungshäufigkeit gehen die Meinungen auseinander (zwischen 15ms und 50ms).
Also hier die 'Lösung':
Tiny13 im 'phase correct PWM mode' betreiben (wie Du den einstellst, hängt von Deiner bevorzugten Sprache ab)
Siehe Datenblatt Punkt 11.7.4 (Seite 66)
Als PWM Ausgang ist dann OC0A (Pin1) zu verwenden. Timer Precaler auf 256
Wenn Du den µC mit 8MHz Takt betreibst, bekommst Du eine Wiederholungshäufigkeit von etwa 16.5ms, falls das zu oft ist, nimm 4MHz Takt (auch mit Timer Precaler auf 256), dann bekommst Du eine Wiederholungshäufigkeit von etwa 33ms.
Damit das Servo seine Werte bekommt, kannst Du OCR0A auf Werte zwischen 17 und 31 setzen (Mitte Servo also bei 23 oder 24) wenn der µC bei 4MHz betrieben wird. Wenn Du einen Takt von 8MHz verwenden kannst, dann OCR0A auf Werte zwischen 32 und 62 (Mitte Servo also bei 47) setzen, das wäre wesentlich 'genauer'. In beiden Fällen wird der Pegel an OC0A genau 1-2ms lang 'High' gesetzt.
Ob die 8MHz funktionieren, einfach testen. Wenn das servo zu stark zittert, auf 4MHz runtergehen.

Wegen Ponyprog. Bin nicht sicher, einfach mal die Schaltpläne für die seriellen Port-Anschlüsse vergleichen.
Crafty-Catcher
Super-User
Super-User
Beiträge: 71
Registriert: Di, 21.11.06, 18:18
Wohnort: Lippstadt
Kontaktdaten:

Fr, 27.11.09, 17:18

Danke Borax, das wird mir morgen auf jeden Fall schonmal viel weiter helfen, eine Frage habe ich allerdings noch. Wie stelle ich den AtTiny13 auf 4 oder 8 Mhz? Mit dem Programm, was ich da oben auch angegeben habe, kann ich den nur auf folgende Werte:

Default
9,6 Mhz
9,6 Mhz / 8
4,8 Mhz
4,8 Mhz / 8
128 kHz
128 kHz / 8

stellen.

Viele Grüße,
Crafty

P.S. Ich hab nochmal kurz mit dem Scheinwerfer und der Cam gespielt, bei einer Langzeitaufnahme von 5s kommt durchaus ein brauchbares Bild bei völliger Dunkelheit dabei raus. Nur wird wohl kein Wildschwein 5s still stehen ;)
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Fr, 27.11.09, 19:54

Stimmt, Du hast recht. Ich bin Tiny13 nicht so sehr 'gewohnt', da ich eher die Tiny25/45 oder ATMega8 verwende (mehr Speicher aber fast der gleiche Preis). Die 'Angaben' bzgl. Takt/Timing kannst Du aber trotzdem verwenden, bei 4.8MHz gibt es dann eben eine Wiederholungshäufigkeit von etwa 27ms und bei 9.6MHz etwa 13.6ms. Könnte auch noch reichen. Leider hab ich Dir die 'doppelten' Werte gepostet. Bei 4.8MHz muss OCR0A auf Werte zwischen 8 und 17 (Mitte Servo also bei 13) und bei 9.6MHz auf Werte zwischen 18 und 36 (Mitte Servo also bei 27). Sehr viele 'Stellungen' des Servos sind das zwar nicht, aber vielleicht reicht es trotzdem. Ansonsten könntest Du auch einen Timer als Counter programmieren, der alle 20ms einen Interrupt auslöst und dann in der Interrupt-Routine einfach irgendeinen Pin einschalten, 1-2ms 'warten' und wieder ausschalten. Hängt halt davon ab, was der Chip sonst noch so zu tun hat...
Crafty-Catcher
Super-User
Super-User
Beiträge: 71
Registriert: Di, 21.11.06, 18:18
Wohnort: Lippstadt
Kontaktdaten:

Fr, 27.11.09, 21:22

Cool danke für die Infos, also eigentlich ist das was der Chip machen soll ganz einfach:

Wenn Pin Z == High dann:
Schalte Pin X auf PWM Stellung Ausschlag Rechts, danach auf Stellung Mitte (das muss halt solange dauern wie das Servo braucht um einmal dahinzufahren und soll dann direkt wieder zurückfahren. Das muss ich mal ausmessen wie lange da das Signal "Ausschlag Rechts" anliegen soll)
Pin Y = High.
Register A = 1
Ende Wenn

Wenn Pin Z == Low && Register A == 1
Schalte Pin X auf PWM Stellung Anschlag Rechts, danach auf Stellung Mitte (selbe wie oben)
Pin Y = Low
Pin X = Low
Register A = 0
Ende Wenn

Mehr muss der gar nicht machen, ich habe mir aber zur Sicherheit noch ein paar andere AtTinys bestellt:
AtTiny 25
AtTiny 85

Ist es sinnvoller einen von denen zu verwenden?

Viele Grüße,
Crafty-Catcher

P.S. PonyProg läuft leider nicht unter nem 64bit OS müsste mir da nen 32bit Ubuntu o.ä. aufspielen
Benutzeravatar
Beatbuzzer
Auserwählter
Auserwählter
Beiträge: 3177
Registriert: Fr, 17.08.07, 11:02
Wohnort: Alfeld / Niedersachsen
Kontaktdaten:

Fr, 27.11.09, 21:57

Crafty-Catcher hat geschrieben: Mehr muss der gar nicht machen, ich habe mir aber zur Sicherheit noch ein paar andere AtTinys bestellt:
AtTiny 25
AtTiny 85

Ist es sinnvoller einen von denen zu verwenden?
Die paar Befehle sollte jeder µC hinbekommen. Servoansteuerung ist auch ziemlich unkritisch.
Selbst die ganz billigen fressen von 25-100Hz alles.
Ich habe sowas bisher nach folgendem Prinzip gemacht:

-Ausgang X high
-je nach Position zwischen 0,8 und 2,2ms warten
-Ausgang X low
-je nach gewünschter Frequenz zwischen 10 und 40ms warten
-das ganze wiederholen

In der Schleife addieren sich zwar die 0,8-2,2ms zu den 10-40ms und die frequenz ist je nach Servostellung nicht immer exakt gleich, aber das macht nicht wirklich was aus.
Ein richtiges PWM-Signal ist das auch nicht. Es wird nur in einem gewissen Zeitrahmen ein Impuls erwartet, dessen Länge gemessen wird und danach dann die Position des Servoarmes gestellt wird.
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Fr, 27.11.09, 23:43

Wenn der Chip sonst nichts zu tun hat und die Servos so unempfindlich auf eine unterschiedliche Wiederholfrequenz reagieren (da hätte ich schon gedacht, dass die ein wenig das zittern anfangen), dann einfach Beatbuzzers 'simple code' verwenden. Die Abfragen Pin Z == High und/oder Pin Z == Low && Register A == 1 brauchen nur so wenige Takte, dass die hierdurch verursachte Frequenzänderung erst recht keine Rolle spielt. Wobei die PWM Lösung bestimmt auch geht.

Die 'höheren' Tiny Chips haben wesentlich mehr Speicher (sowohl SRAM als auch Flash) als die Tiny13. Daher mit Bascom (also Basic) leichter zu programmieren. Beim Tiny13 muss man schon aufpassen, weil Bascom automatisch bei allen Arten von Unterprogrammen ganz 'klassisch' alle Register auf dem Stack sichert und daher schon eine gewisse Menge SRAM braucht. Wenn man ein paar Variable haben will/braucht, dann wird es sehr schnell zu 'eng'. Für die hier angesprochene Aufgabe reicht aber der Tiny13 locker auch (sogar wenn man das Programm in Bascom schreibt).
Crafty-Catcher
Super-User
Super-User
Beiträge: 71
Registriert: Di, 21.11.06, 18:18
Wohnort: Lippstadt
Kontaktdaten:

Sa, 28.11.09, 08:47

Dann werde ich das mal heute versuchen. Ich merke auch gerade mal wieder, dass ich mich ein wenig blöd anstelle - sorry. Die Programme laufen nicht in der Proggerschaltung nur in der Zielschaltung. Ich hatte gedacht, da z.B. PB4 in meiner Proggerschaltung mit keinem anderen Bauteil in Verbindung steht würde das trotzdem funktionieren, leider war dem nicht so und ich habe es erst spät getestet ob es in meiner Zielschaltung funktioniert.
Das Servo läuft mit den Testprogrammen doch, z.B. mit diesem C Programmbei 9,6 Mhz oder diesem Assembler Programm bei 4,8 Mhz.

Das C Programm läuft über PB0 oder PB1, das Assemblerprogramm über PB4

Beide Programme haben den selben Effekt, dass sie das Servo von einem Extrem zum anderen Bewegen, das sollte ich als Grundlage für mein Programm verwenden können. Aber das wird sicher etwas dauern, da ich wie gesagt in PHP, JS, Delphi und ABAP fit bin aber Assembler nur mal im 1. Semester in meinem ersten und abgebrochenem Studium hatte und C noch nie. Trotzdem denke ich, dass ich das C Programm nutzen werden, weil es trotz geringer Assembler-Erfahrungen leichter sein wird sich da reinzufuchsen.

Ich hab da noch ne Frage zu den Mosfets. Ich habe hier eine Tüte voller IRFU 9024N. Wenn ich mir das Datenblatt aus Seite 8 so anschaue ist wenn das Kühlblech auf dem Tisch liegt und die Beinchen nach unten zeigen Bein Nummer 1 ganz links ach was solls ... ich mach nen Bild das sagt mehr als 1000 Worte:
Mosfetkl.jpg
Mosfetkl.jpg (47.45 KiB) 9562 mal betrachtet
Wenn die Pinbelegung richtig ist, dann muss ich nur noch wissen wo ich das Signal anlegen muss und wo die Zielspannung anliegen muss. Nach diesem Tutorial, ist Gate der Signaleingang, Source lege ich auf Masse und vor Drain schalte ich meinen Verbraucher und lege diesen an meine Zielspannung. Sehe ich das richtig?

P.S. Ich habe das C-Programm mal so modifiziert, dass es meine Kamera nur ein und wieder ausschaltet, dass funktioniert schon ganz gut. Der Quelltext sieht jetzt zu Testzwecken erstmal so aus:

Code: Alles auswählen

#include <avr/io.h>
#include <avr/delay.h>
#include <avr/interrupt.h>

volatile unsigned int Tick;   // 100KHz pulse
volatile unsigned int sPulse;   // Servo pulse variable
volatile unsigned int Tick_20ms;   // Servo frame variable

int main (void)
{

   sei(); //  Enable global interrupts
   DDRB |= (1<<PB0) | (1<<PB1); // PB0 and PB1 as outputs
   TCCR0A |= (1<<WGM01); // Configure timer 1 for CTC mode
   TIMSK0 |= (1<<OCIE0A); // Enable CTC interrupt
   OCR0A = 95; // Set CTC compare value
   TCCR0B |= (1<<CS00); // No prescaler
   Tick = 0;
   Tick_20ms = 0;

   while(1)
   {	
   	  sPulse = 133;
      for(int i=0; i<=20; i++)   // Servo auf AN schalten (i bestimmt wie lange der Zeitrahmen ist, indem das Servo auf die Position sPulse fährt)
      {
         _delay_loop_2(10000);
      }

      sPulse = 143;
      for(int i=0; i<=200; i++) // Servo auf AUS schalten
      {
         _delay_loop_2(10000);
      }
      
   }
}

ISR(TIM0_COMPA_vect)   // 100 KHz interrupt frequency
{
   if(Tick >= 2000)   // One servo frame (20ms) completed
      {
         Tick = 0;
        Tick_20ms = Tick_20ms + 1;
      }

   Tick = Tick + 1;
   if(Tick <= sPulse)   // Generate servo pulse
   {
      PORTB |= (1<<PB0);   // Servo pulse high
   }
   else
   {
      PORTB &= ~(1<<PB0);   // Servo pulse low
   }
} 
P.P.S.
Um nicht noch einen AtTiny13 zu schrotten, habe ich gleich noch eine Frage. Meine Stromquelle sind 4 Mignon Akkus also ca 4,8 V wenn ich nun einen Eingang des AtTiny mit einem High Signal belege, könnte ja theoretisch ein Strom durch den AtTiny fließen und den zerstören, es sei denn der Innenwiderstand des AtTiny ist unendlich groß. Muss ich zum Testen zwischen Pluspol meines Akkus ein Eingangsbeinchen des AtTiny noch einen Widerstand hängen um den AtTiny nicht durch irgendeinen zu großen Strom zu killen? Wenn ja wie groß sollte der ca. sein?
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Sa, 28.11.09, 17:00

Bzgl. Mosfet... Alles richtig (auch Pinbelegung ). Vom Tiny-Pin aus über etwa 150Ohm direkt an das Gate.
Meine Stromquelle sind 4 Mignon Akkus
Da würde ich ggf. nur 3 Zellen für den µC verwenden. Randvoll geladen ohne hinreichend Last (der Tiny braucht ja nur ein paar mA) bringen die auch fast 5.6V und das ist für den µC schon 'grenzwertig'. Ansonsten ist der zufrieden wenn er eine Spannung zwischen 3-5V bekommt. Strombegrenzung ist nicht erforderlich.
Crafty-Catcher
Super-User
Super-User
Beiträge: 71
Registriert: Di, 21.11.06, 18:18
Wohnort: Lippstadt
Kontaktdaten:

Sa, 28.11.09, 17:31

Ich hab das mit den Mosfets auf nem Steckbrett ausprobiert. Drain und Source sind ohne Signal direkt verbunden, d.h. mein IR Scheinwerfer lässt sich nicht schalten bzw. ist permanent an. Hat jemand da ne Idee?

Viele Grüße,
Crafty-Catcher
Benutzeravatar
Beatbuzzer
Auserwählter
Auserwählter
Beiträge: 3177
Registriert: Fr, 17.08.07, 11:02
Wohnort: Alfeld / Niedersachsen
Kontaktdaten:

Sa, 28.11.09, 19:28

Crafty-Catcher hat geschrieben:Ich hab das mit den Mosfets auf nem Steckbrett ausprobiert. Drain und Source sind ohne Signal direkt verbunden, d.h. mein IR Scheinwerfer lässt sich nicht schalten bzw. ist permanent an. Hat jemand da ne Idee?
Ja.
Das Gate darf nicht einfach frei in der Luft hängen. Denn dann hat der FET keinen definierten Zustand.
Wenn der FET sperren soll, muss das gate an Masse. Wenn er leiten soll, muss das Gate an +Ub.
Wenn du das ganze auf einem Steckbrett hast, dann steck beim Gate einfach ein Stück Draht ein.
Das kannst du dann zwischen +Ub und Masse hin- und herstecken.
Crafty-Catcher
Super-User
Super-User
Beiträge: 71
Registriert: Di, 21.11.06, 18:18
Wohnort: Lippstadt
Kontaktdaten:

Sa, 28.11.09, 20:53

Irgendwas schein ich grundlegend falsch zu machen, das löst mein Problem auch nicht, wenn ich Pin 1 und 3 mit Masse verbinde und an Pin 2 meinen IR Scheinwerfer inkl Versorgungsspannung hänge, dann geht der wieder an, statt aus zu bleiben. Stimmt vielleicht was mit dem Typ der Mosfets nicht? Ich hab das Datenblatt weiter oben unter der Bezeichnung verlinkt - wäre nett wenn das mal jemand kontrollieren könnte. Vielen Dank!

Viele Grüße,
Crafty-Catcher
Benutzeravatar
Beatbuzzer
Auserwählter
Auserwählter
Beiträge: 3177
Registriert: Fr, 17.08.07, 11:02
Wohnort: Alfeld / Niedersachsen
Kontaktdaten:

Sa, 28.11.09, 21:01

Crafty-Catcher hat geschrieben: Ich hab das Datenblatt weiter oben unter der Bezeichnung verlinkt - wäre nett wenn das mal jemand kontrollieren könnte. Vielen Dank!
P-Channel...
Das ist so wie PNP bei Bipolar-Transistoren.
Du hast aber bisher als NPN angeschlossen. Und um an den µC dranzugehen, brauchst du auch vorzugsweise NPN bzw. N-Channel FETs.

Damit dein Testaufbau funktioniert, pol mal die Betriebsspannung um (die Dioden natürlich auch sonst leuchten sie ja nicht mehr :wink: )
Crafty-Catcher
Super-User
Super-User
Beiträge: 71
Registriert: Di, 21.11.06, 18:18
Wohnort: Lippstadt
Kontaktdaten:

Sa, 28.11.09, 21:30

hm mich hat dann das N in der Typ Bezeichnung in die Irre geführt.

Also neuer Versuchsaufbau:
+ an Pin 3
von Pin 2 zu + von den LEDs -> - der LEDs an -
dann bleiben die LEDs schonmal aus
leider auch wenn ich von Pin 3 dann über nen R 150 Ohm an Pin 1 gehe
Antworten