Projekt Wärmebildkamera ( Jugend forscht )

Hallo zusammen,

ich habe mir vor wenigen Tagen den Arduino Duemilanove zusammen mit einem Stepper Shield und dem Buch “Getting started with Arduino” zugelegt, um mich in die ganze Thematik einzuarbeiten ( ich bin 16 und bis jetzt völliger Neuling auf diesem Gebiet ).
Ich habe dieses Jahr bereits bei Jugend Forscht mit einem Protyp einer Wärmebildkamera teilgenommen, allerdings will ich diese nun professionell umsetzen und 2010 erneut teilnehmen.
Ich werde hier ab und zu ein paar Fragen stellen ( wenn ich mal nicht selber weiter komme ) und wäre sehr dankbar, wenn ihr mir helfen würdet.

Zu meiner Projektidee im Allgemeinen ( so wie ich sie beim Wettbewerb präsentiert habe; damals habe ich das ganze noch mit einem Makro, dem Messwerteerfassungsystem Vernier Labquest und Lego NXT realisiert ): Ein Infrarotsensor wird zusammen mit einer Webcam auf einem Dreh/Schwenkneiger platziert, der wiederum von 2 Motoren gesteuert wird. Im 1. Schritt wird ein normales Bild des zu scannenden Bereiches mit der Webcam geschossen, danach fährt der Infrarotsensor auf der Dreh/Schwenkvorrichtung den Bereich wie ein Scanner in einzelnen Reihen ab und nimmt dabei in bestimmten Abständen die Temperatur auf. Diese wird anschließend ( abhängig von der maximalen und minimalen Temperatur ) in das RGB Farbmodell umgewandelt und zuletzt als kleine durchsichtige Quader über das am Anfang erstellte Webcambild gelegt, so entsteht eine Art Wärmebild. Diese Methode soll eine Alternative zu den sehr teuren kommerziellen Wärmebildkameras darstellen.

Soweit zur Vorinfo, nun mein Problem: Ich würde an den Arduino gerne die Stepper Platine mit 2 Schrittmotoren, das MicroSD Module 1Gb ( um die fertigen Wärmebilder zu speichern ) und das S65 Shield ( zur Menüsteuerung und Bildvorschau ) anbringen, zusätzlich noch einen Infrarotsensor ( den hab ich schon, benötigt nur einen analog pin ) und evtl. noch eine Bildkamera anschließen. Hat der Duemilanove dazu genügend freie Pins oder brauche ich dazu den Mega ?

Willkommen im Forum,

Der Arduino Mega ist sicher eine nette Variante wenn man viele Pins benötigt, aber die normalen Arduinos reichen sicher für Deine Anwendung. Ich kenne leider die Shields nicht im Detail, aber Du solltest folgendes prüfen:

Gibt es Pins (abgesehen von Versorgunsspannung und Masse), die von allen Shields benötigt werden? Weil Du willst ja sicher alle Shields gleichzeitig an einem Arduino benutzen, oder? Es gibt Expander, die es erlauben zwei oder mehr Shields auf einen Arduino aufzusetzen. Hier findest Du mehr Infos: http://www.liquidware.com/

Evtl. willst Du aber sogar einen Bluetooth Arduino (ArduinoBT), der die Daten direkt via Bluetooth an den PC sendet anstatt sie auf SD zu speichern? Oder soll es eine mobile Lösung werden, die ohne Laptop auskommt?

Und der Arduino (egal welcher) hat keine schnellen Fließkommabefehle, sogar die einfache Division fehlt dem RISC Chip. Also würde ich keine aufwändige Bildverarbeitung auf ihm durchführen. Das sollte entweder in der Kamera passieren oder Du benötigst einen zusätzlichen Chip dafür, beispielsweise einen DSP... was wiederum den Arduino überflüssig machen könnte.

Poste dich auch mal ein paar Details und Bilder von der Lösung mit dem NXT.

Danke für den Tipp mit dem DoubleWide Extender, damit dürften soweit ich das beurteilen kann das S65 Shield und das Stepper Shield in Kombination funktionieren, das MicroSD Erweiterung brauche ich doch nicht da das S65 Shield hinten schon einen Kartenleser hat.
Am besten wäre es natürlich, wenn das Projekt Standalone läuft, also ohne Laptop und mit Akkupack (gibts ja auch auf Liquidware). Dazu müsste auf dem Arduino ein Menü laufen und auch die transparenten Quadrate irgendwie über das Kamerabild gelegt werden, inwiefern kann hier der DSP helfen, wie teuer ist er und wo bringt man ihn an ?
Falls das nicht möglich ist kann natürlich auch ein angeschlossenes Laptop die Bildbearbeitung übernehmen und das fertige Bild dann direkt auf dem Monitor ausgeben, so würde das zusätzliche Display entfallen. Inwieweit kann der Arduino per USB mit dem PC kommunizieren, ist es z.B. möglich das Bild in einen bestimmten Ordner zu transferieren und ein Programm zu starten ?

Hier noch ein Bild der jetzigen Version mit dem NXT:

mir ist kein DSP shield bekannt und ich würde es an Deiner Stelle erstmal mit einem PC versuchen.

Du kannst einen virtuellen COM port (typisch 9600baud, aber es geht auch mehr) öffnen, der den USB Anschluß vom Arduino nutzt. Der Arduino könnte also über eine serielle Verbindung die Daten an den PC senden, wo eine entsprechende Client Software (egal in welcher Sprache geschrieben) die Daten in Empfang nimmt.

Ich würde am Anfang sogar den PC zum Gehirn machen. Er gibt dem Arduino also (ebenfalls über die serielle Verbindung) Befehle (wie drehe links, rechts, etc., schieße Foto, lies Sensor) und nimmt die entsprechenden Daten dann in Empfang.
Wenn Du die Kamerabilder durch den Arduino schleifen willst wird es schon eng mit den Ressourcen, da solltest Du wohl externes RAM oder sowas einplanen (dafür müsstest Du ein Shield bauen).
VIEL Einfacher wäre es, wenn der PC direkt mit der Kamera verbunden wäre und der Arduino die Kamera nur ausrichtet...

Ok danke dann werd ich das so machen, also eine ganz normale Webcam verwenden und den Arduini nur den Part mit dem Steuern der Motoren übernehmen lassen, gelenkt durch die Beschleunigungssensoren.
Der Arduino schickt die fertigen Messwerte dann an den PC, auf dem ein in JAVA geschriebenes Programm diese über den virtuellen Serial Port abfängt.
Eine Menge Arbeit aber machbar :slight_smile:

ich empfehle für die Ansteuerung von Steppern die EasyDriver von Sparkfun, mit dem shield hatte ich Probleme

habe damit einen Kamerarobot gebaut, der eine DSLR für Gigapixelpanoramen positioniert, für die Steuerung noch einen Nunchuk und für die Menu-Anzeige ein serielles LCD angeschlossen

Die Platine von Sparkfun ist sicherlich hilfreich. Alternativ kannst Du auch die Platine benutzen, die ich für Tests verwende, auch wenn sie wesentlich grösser ist und nur als Bausatz zu haben ist. Es ist die Best.Nr. 810 027 bei www.pollin.de

Ich entwickel auch gerade ein Shield, mit dem man bis zu 8 Motoren (keine Schrittmotoren) ansteuern kann. Aber das ist für Deine Anwendung eher ungeeignet denke ich.

@absolutum: klingt nach einem netten Projekt, hast Du es hier im Forum vorgestellt oder wo kann man mal ein paar Bilder und sowas sehen? Die Idee mit dem Nunchuk ist Zucker!

So, ich hab gestern die Stepperplatine zusammengelötet, was zum Glück auch funktioniert hat ( war mein erster Kontakt mit dem Lötkolben ;D ).
Die Ansteuerung der 2 Schrittmotoren klappt soweit, Geschwindigkeit, Zeit und Richtung lassen sich einstellen. Jetzt würde ich gerne einen Sensor anschließen, den ich an meinem Schwenkneiger befestige und der mir sagt, um wieviel Grad sich der Infrarotsensor dreht bzw. neigt. Eignet sich hierfür das Gyro Breakout Board - LISY300AL 300 degree/sec (http://www.watterott.com/index.php?a=631&) oder ein normaler Beschleunigungssensor ?

Zum Gyro kann ich nichts sagen.

Such mal nach Arduino ADXL330 in google... den Sensor habe ich mal benutzt um die Lage zu ermitteln. Ob das aufs Grad genau funktioniert muss man testen, aber der Sensor ist sehr beliebt und machte einen sehr guten Eindruck. Wird sicher passend sein für Deine Anwendung.

Die Webcams können auch Infrarot erfassen und tun dies nur deswegwn nicht, weil eine Filterfolie es verhindert.

Hier ist eine Anleitung dazu:

das funktioniert, ein Kollege von mir trackt so multitouch Displays.

Ich habe die letzten Tage schwer gearbeitet und meine Apparatur fertig gebaut

Jetzt hab ich ein ziemlich driftiges Problem, für das ich auch nach langer Suche keine Lösung gefunden habe, ich hoffe ihr könnt mir helfen :

An die Stepperplatine will ich zwei solche Motoren anschließen: http://www1.conrad.de/scripts/wgate/zcop_b2c/~flN0YXRlPTk2NzU5NDM0OQ==?~template=pcat_product_details_document&product_show_id=198722&no_brotkrumennavi=1&zhmmh_area_kz=LN# (einen hab ich schon, der andere wird bald bestellt). Für die Bewegung der Seilzugrolle reicht der Motor locker aus, bei der Drehung des Zahnrads kommt er allerdings schwer ins stocken und startet manchmal gar nicht (das Zahnrad geht trotz Gleitlager aufgrund des Gewichtes relativ schwer). Das Problem bessert sich, wenn ich das 3-12 Volt Netzteil von Watterott einstecke, selbst dann ist das klacken und starten aber nicht akzeptierbar :’(

Der Motor benötigt laut Bedienungsanleitung http://www2.produktinfo.conrad.com/datenblaetter/175000-199999/198722-an-01-en-42MM_SCHRITTMOTOR_1_8_1A_0_27NM.pdf “up to 42V operating voltage”, wobei er anscheinend so ab 30v richtig gut läuft.
Wenn ich zwei Motoren drannhängen hab, steigt die spannung noch mal an ( der seilwindenmotor funktioniert auch mit USB Spannung, also <= 5V ). Wieviel Volt verpackt der Arduino überhaupt und wie kann man die Spannung erhöhen bzw. auf die Motoren verteilen ? Bringt es was wenn ich den besseren Motor mit mehr Leistung http://www1.conrad.de/scripts/wgate/zcop_b2c/?~template=PCAT_PRODUCT_DETAILS_DOCUMENT&object_guid=9AD970434098FE56E10000000A010221&master_guid=&master_desc=&master_group=&p_load_area=1101151&master_typ=&master_first_row=&master_last_row=&max_tab_items=10&no_brotkrumennavi=1&cachedetail=# kaufe oder läuft der auch nur mit ausreichend Spannung besser als der jetzige ? Ich bin wirklich ratlos und etwas verwirrt :-?

Danke für jede Antwort

die Links zu den Motoren funzen nicht, weil da deine Session mit drin steht ...

poste besser einfach nur die Artikel-Nummern

wie steuerst du den Stepper an?
gleich mit Vollgas oder über eine Rampe?

du hast das Teil ja sehr massiv ausgelegt und brauchst schon einen ziemlichen Impuls um die Masse in Gang zu setzen

allein das Zahnrad liesse sich deutlich erleichtern durch Bohrungen

Sry, die Urls hab ich oben editiert jetzt dürften sie gehn.
Die Motoren steuer ich direkt an mit Modus ( in dem Fall Interlave ), Richtung, Dauer und Geschwindigkeit. Ich hab jetzt heraus gefunden, dass man die Stepper Platine über einen "External Motor Power" Eingang mit separatem Strom versorgen kann. Dazu steht noch "4 H-Bridges: L293D chipset provides 0.6A per bridge (1.2A peak) with thermal shutdown protection, 4.5V to 36V ". Heißt das jetzt, dass ich da ein Netzteil mit zum Beispiel 34V (um nicht ganz ans Maximum zu gehen) und 2 A anschließen könnte, um meine Motoren zu versorgen ?
Hier ist die Homepage von der Platine: Motor Shield - Arduino motor/stepper/servo control (auf dem oberen Bild sieht man unten den Power eingang)

Das mit den zusätzlichen Bohrungen versteh ich nicht ganz, wo würdest du die ansetzen ?

Das sieht doch schon super aus! Und den ADXL330 erkennt man auch gut im Bild :slight_smile:

Zahnrad erleichtern z.B. so wie es hier zu sehen ist

also erst mal Hut ab maxbot, was du hier vor hast finde ich sehr gut.

Aber ich denke man hat dir hier etwas falsches vorgeschlagen denn: IR-Kamera != Wärmebildkamera

Eine Infrarot (IR) Kamera zeigt nur reflektierende IR-Strahlen die unterschiedlich gebrochen werden (je nach Farbe)

Eine Wärebildkamer "misst" die Temperatur und zwar für jeden Pixel am Monitor und zeigt dies dann in unterschiedlichen Farben an.

Das Bild einer IR-Kamera sieht folgendermaßen aus:
http://xemel.ch/images/bn08_3/26_sw.jpg

Und das einer Wärmebildkamera so:
http://www.radio101.de/thermographie/gebaeudethermographie.htm

Zu dem Problem mit dem Motor. Ich denke du kennst dich um einiges besser aus als ich aber wenn der Motor zu schwach ist, dann ist das Gewicht des Zahnrades dein kleineres Problem. Da frag ich mich, muss den alles so Massiv sein? Die Welle im hinteren Bereich, würde da nicht auch ein Rohr reichen? Oder bei der schwenkbaren Platte würde die nicht halb so stark auch noch genug aushalten?
Vielleicht versteh ich hier auch einiges falsch, dann klärt mich bitte auf.

zur mechanik und den steppern:

wenn der stepper einfach stehen bleibt, dann hat das viele moeglichkeiten:

  • step sequenz viel zu schnell
  • drehmoment wird ueberschritten
  • viel zu wenig phasenstrom

nachdem der stepper in guter naeherung eine ziemlich dicke induktivitaet ist, heisst das auch, dass du bei schneller step sequenz eine recht hohe spannung brauchst, um den phasenstrom in der kurzen zeit hoch genug zu bekommen. das scheint bei dir nicht zu klappen. wenn der motor und der treiber mehr spannung vertragen als du z.zt. lieferst, dann gib ihm mehr. ein regelbares netzteil ist sinnvoll fuer tests. der phasenstrom darf dabei das maximum natuerlich nicht ueberschreiten. das haengt dann wieder mit der step frequenz zusammen. in linearer naeherung (falsch) ist [ch916]I = U/L*[ch916]t. so kannst du abschaetzen wie hoch dein phasenstrom wirklich ist.

das gleitlager deiner hauptachse wuerde ich ersetzen. teflon ist gut und schoen, aber nichts fuer kleine stepper.

fuer die radiale fuehrung nimm einen block mit 2 normalen radialkugellagern mit entsprechendem durchmesser, so dass da stabil ist. um die vertikale last aufzunehmen, bietet sich ein achsialkugellager oder walzenlager an. es gibt auch drehtischlager, aber das duerfte teuer werden.

in punkto drehmoment und traegheitsmoment I:

M = I * [ch916][ch969]/[ch916]t

I = [ch8747]r²dm

I gewichtet massenpunkte also quadratisch mit dem abstand zur drehachse, daher wird bei deiner massiven stahlkonstruktion schon bei kleinen winkelbeschleunigungen ein nicht unerhebliches drehmoment faellig, auch wenn absolut keine reibung vorhanden waere.

vielleicht besteht auch die moeglichkeit den stepper fuer die drehachse durch einen einfachen getriebemotor mit planetengetriebe zu ersetzen. die ortsbestimmung koenntest du dann mit einem "quadrature encoder" erledigen. das funktioniert so wie in alten optischen maeusen. 2 (reflex)lichtschranken und ein encoder-rad mit schwarz-weiss muster. die sensoren sind so angeordnet, dass 90° phasenverschiebung zwischen den signalen liegt. so bekommt man information ueber die drehrichtung und die anzahl der steps.

vielleicht findest du auch bei INA etwas passenderes.

Nicht schlecht die Konstruktion. Vieleicht willst Du mal mit Jörn Loviscach reden:

http://www.j3l7h.de/ideas.html

"Poor Man's Thermographic Camera"

Gruß, Udo

Nur so aus Neugier: wie kommt man mit 16 an so eine professionell aussehende Konstruktion? Mit 16 hätte ich das nie gekonnt und heute würde mir das sicher auch nicht leicht fallen. Das würde mich echt interessieren. Das nächste (ähm erste) Roboterprojekt kommt bestimmt…

Hallo,

noch ein paar Links zu meiner Wärmebildkamera für arme Leute:
w w w PUNKT j3l7h PUNKT de SCHRÄGSTRICH publications SCHRÄGSTRICH thermocam_web PUNKT pdf
w w w PUNKT youtube PUNKT com SCHRÄGSTRICH watch?v=N1fV20gTEr0
(Leider akzeptiert das Forumsystem kein funktionierende URLs in diesem erst Posting von mir.)

Ich würde mich über jede Zusammenarbeit freuen und kann auch gerne als Mentor für "Jugend forscht" agieren.

Grüße,
Jörn Loviscach