Hallo
Ich bin Student der Automatisierungstechnik und bin nun mit einem
Projekt beauftragt worden, dass eher im Bereich Embedded Engineering.
Leider bin ich mit dem Bereich noch nicht allzu vertraut.
Nun würde ich gerne von euch wissen, ob meine Herangehensweise so in
Sinn macht:
Aufgabe:
Ich bekomme Analoge Daten, die digitalisiert werden müssen und
anschließend seriell an einen PC übermittelt werden sollen über die USB
Schnittstelle. Gleichzeitig soll die USB Verbindung meine Schaltung mit
Spannung versorgen, sodass keine externe Spannungsversorgung nötig ist.
Meine Herangehensweise:
Ich habe mir als µP den Atmega8 ausgewählt. Hierzu gibt es
genügend Beispielschaltungen, die man zuhaufe im Netz findet.
Die Spannungsversorgung über USB dürfte ebenfalls kein Problem
sein, da der Atmega8 einen Spannungsbereich von 2,7V – 5V abdeckt
und mir die USB Schnittstelle 5V liefert. Eventuell würde ich hier
noch einen Tiefpassfilter einsetzen, damit evtl. Störungen nicht
meinen µP beeinflussen.
Vielleicht ist es aber auch besser einen neuen Festspannungsregler
auf meiner Platine einzusetzen, um z.B. eine stabilisierte
Spannung von 3,3V aufzubauen?
Software-technisch würde ich den µP gerne mit C programmieren, da
ich hier schon ein wenig Erfahrung mit habe. Als <
Programmierumgebung ist AVR Studio 6 angedacht (C Toolchain,
Programmiertools usw. sind hier doch alle erhalten?)
Mein großes Problem ist zurzeit noch die Kommunikation über USB
zum Rechner.Bisher ist meine Idee die Uart Schnittstelle des µP´s zu
nutzen und die Daten dann über einen IC (FT232RL) auf USB Niveau zu
wandeln. Ob und wie ich die Daten dann am PC erhalten kann, sowie die
genaue Softwarerealisierung ist aufgrund mangelnder Kenntnisse noch sehr
fraghaft für mich.
Könnt ihr mir vielleicht ein paar Tipps geben, ob mein Vorhaben in der
Art realisierbar ist?
Über ein paar weitere Tipps zur Softwarerealisierung des USB Problems
würde ich mich ebenfalls freuen.
Gruß
Bernd
Zu messender Eingangsspannungsbereich?
Gewunschte Auflösung?
Gewünschte Genauigkeit?
Abtastrate?
Sicherung der Daten über CRC o.ä?
--> Übertragungsrate
Hallo,
Der Eingangsspannungsbereich hängt zu Zeit noch von einem anderen
Projekt ab. Unsere Gruppe ist nur für die Digitalisierung und
Messwertaufbereitung zuständig. Es wir aber denke ich im Bereich von
max. 3V bis 0V liegen.
Abtastrate: Es ist ein Träger Porzess zu analysieren, deswegen kommt es
auf die Abtastrate nicht so genau an. Desweiteren genügt auch ein
einziger Kanal.
Die Auflösung sollte auf jeden Fall bei 10Bit liegen.
Der ACD Teil ist aber auch nicht mein größtes Problem, da ich so eine
Schaltung schon einmal in einem Praktikum aufgebaut habe.
Gruß
Bernd
Bernd schrieb:> Eventuell würde ich hier> noch einen Tiefpassfilter einsetzen, damit evtl. Störungen nicht> meinen µP beeinflussen.
Wichtig ist ein Filtern vor allem der Versorgung des Analogteils,
damit du dir keine Störungen in den ADC einkoppelst.
Für minimale Störeinkopplung solltest du während der AD-Wandlung
den Controller schlafen legen. Der hat einen eigenen Modus dafür,
bei dem so gut wie alle Takte abgeschaltet sind außer denen, die
für den ADC notwendig sind.
Ein separater Regler ist normalerweise verzichtbar.
> Mein großes Problem ist zurzeit noch die Kommunikation über USB> zum Rechner.Bisher ist meine Idee die Uart Schnittstelle des µP´s zu> nutzen und die Daten dann über einen IC (FT232RL) auf USB Niveau zu> wandeln.
Der FT232RL wird seriell an den Controller angebunden. Dafür braucht
der Controller eine hinreichend genaue Taktrate, was, wenn du auf
Nummer Sicher gehen willst, einen Quarz erfordert.
Alternativ kannst du dir auch den parallel angebundenen FR245 mal
ansehen. Portpins solltest du je genug frei haben (12 Stück brauchst
du dafür, 8 für die Daten und vier Steuerleitungen). Der benimmt
sich aus Sicht des PCs genauso wie ein FT232 (gleiche Treiber), ist
aber in der Taktrate zum Controller völlig unkritisch.
> Ob und wie ich die Daten dann am PC erhalten kann,
Ist eine fiktive serielle Schnittstelle aus PC-Sicht. Du brauchst also
irgendeine PC-Software, die mit seriellen Schnittstellen umgehen kann.
So nach einiger Zeit hab ich jetzt mal einen Schaltplan meines Projektes
erstellt, den ich hier anhänge.
Ich habe viele Beispielschaltungen aus dem Netz als Vorlage genommen und
denke, dass soweit alles in Ordnung ist.
Ich würde mich aber über ein paar Anregungen von euch freuen, da ich wie
gesagt in dem Bereich noch etwas unerfahren bin.
Hauptsächlich geht es mir darum, ob alles von mir richtig beschaltet
wurde. Gerne nehme ich aber auch weitere Tipps entgegen.
Für evtl. Unklarheiten, erkläre ich hier nochmal die Hauptfunktionen und
wie ich sie gelöst habe.
------------------------------------------------------------------------
Zur Schaltung hier nochmal ein paar Einzelheiten:
Die vielen Lötösen bzw. Jumper (Stiftleisten) sind hauptsächlich um die
erste „Prototypen-Platine“ noch flexibel zu halten. So kann ich, falls
etwas noch nicht funktioniert, Anschlüsse immer noch auf
Steckbrettplatinen herausführen und Schaltungsteile evtl. verändern bzw.
erweitern.
Beispiele hierfür sind z.B.:
- Der µP soll auf einer zweiten Platine ein Signal schalten, was
abhängig von einer Schalterstellung auf derselben Platine geschehen
soll(1x Eingang PD3, 1x Ausgang PD2).
Nach der Schaltung erhält der µP eine Analoge Spannung, die er
Auswerten soll(ADC0 PC0). Anschluss K6 beinhaltet also hauptsächlich 3
Signale, die ich durch Jumper(K12,K13,K14) auch ohne die zweite Platine
auf meiner Platine simuliert werden können.
- VCC und GND gebe ich nochmal getrennt vom „Signal-Flachbandkabel“
über K10, da ein größerer Strom am Ausgang fließen wird (µP schaltet nur
einen Steuertransistor). Somit belaste ich nicht meine Signale mit
etwaigen Störungen.
((Ich weiß, dass über USB maximal 500mA fließen dürfen, wir wollen aber
einen Doppelstecker benutzen (wie bei älteren Festplatten) um einen
höheren Strom entnehmen zu können.))
- Der FT232RL ist über RXD und TXD mit dem µP verbunden. CTS und RTS
sind für einen Handshake bestimmt. Wie und ob ich sie nutzen soll weiß
ich leider noch nicht. Wie ich es bis jetzt verstanden habe muss ich die
Signale nicht unbedingt nutzen.
- Da ich noch nicht genau weiß wie gut die Taktausgabe vom FT232RL über
CBUS0 zu programmieren ist, kann ich über Jumper K3,K4 auch ersatzweise
einen Quarz-Takt auf dem Controller schalten. ((Hierfür sollte man doch
am besten so genannte Baudratenquarze verwenden um die Taktrate gerade
herunter teilen zu können oder?))
- Da ich am Ende den genauen Stromverbrauch der Gesamt- bzw. der 2.
Schaltung wissen möchte, kann ich über Jumper K7,K8 ein Amperemeter in
Reihe schalten
------------------------------------------------------------------------
So ich hoffe der restliche Teil meiner Schaltung erklär sich von selbst.
!!!!!!!!!DANKE AUF JEDEN FALL SCHON EINMAL IM VORAUS!!!!!!!!!!!!!
Du machst es Dir unnötig kompliziert.
Ich hätte hier einen anderen Vorschlag:
ADC-Wandler MCP3208, 8 Eingänge, 12 Bit Auflösung, SPI-Schnittstelle
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010534
So, und da Du den über USB auslesen willst, brauchst Du so etwas wie
einen USB-nach-SPI-Wandler. Kein Problem, da hat Microchip auch was für
Dich: den MPC2210.
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en556614
Damit sparst Du Dir den Mikrocontroller-Programmierung. Der MCP2210 ist
im Prinzip nur ein vorprogrammierter PIC18F14K50 mit eingebautem USB.
Für den PC erscheint er als USB HID, d.h. Du brauchst keine speziellen
Treiber dafür. FTDI hat auch Bausteine, die SPI können.
fchk
Hört sich ja auch nicht schlecht an. Wäre natürlich auch einfacher.
Den MPC2210 kann ich leider niergendwo finden.
Da ich mir die ganze Arbeit jetzt schon gemacht habe und auch mein
Wissen im Bezug auf µP Programmierung ausbauen möchte baue ich meine
Schaltung auf jeden Fall auch auf. Deswegen, wäre ich für Ratschläge
immer noch Dankbar.
Als Zweite Möglichkeit könnte ich mir allerdings gut vorstellen deinen
Vorschlag auch umzusetzen.
Arduino im professionellen Bereich beleidigt die Seele.
Ich bin schon oft an Begrenzungen in der IDE hängengeblieben, was mir
bei avr-gcc in der Befehlszeile nicht passiert ist.
Aber die Möglichkeit ist, die Arduino-Hardware zu verwenden, auf den
bootloader zu verzichten und über isp zu programmieren. Der 16U2
Prozessor ist dann das Äquivalent zum FTDI.
Wenn ich das richtig sehe, dann spare ich mir bei dem PIC18F27J53
ausschließlich den FDI Chip ein. Der Rest lässt sich mit meinem Atmega8
doch auch realisieren.
Mein Problem ist ein bisschen die Zeit. Bei dem Atmega8 kenne ich mich
schon ein bisschen in der Programmierung aus und hätte den Schaltplan
(wenn er denn in Ordnung ist) fertig. Beim PIC müsste ich mich jetzt
nochmal komplett mit der neuen Hardware auseinandersetzen. Das würde ich
sehr gerne machen, jedoch muss das Projekt zeitnah fertig sein und
nebenbei muss ich ja auch noch n bissel studieren;-)
Naja ich hoffe mal, dass der Schaltplan so in Ordnung ist. Danke auf
jeden Fall für eure Anregungen.
Falls jemand weiterhin noch Tipps zu meiner Variante hat. Immer her
damit.
> um die erste „Prototypen-Platine“ noch flexibel zu halten.
Kauf die Teile ein und steck sie auf einem Steckbrett zusammen.
Du hast mir da ehrlich gesagt einen Haufen möglicher Jumper verplant,
die nicht wirklich Sinn machen. (Die grundsätzliche Funktionalität macht
schon Sinn, aber man braucht das Zeug nicht auf der Platine)
Wenn du einen Quarz benutzt, dann benutz den Quarz. K3 und K4 braucht
keiner.
Der ganze Komplex rund um K12, K14, K13, S2, D2 und den 120R lässt sich
auch mit einem Adapterkabel lösen, welches fliegend verdrahtet an K6
angesteckt wird. Zur Inbetrieb-Nahme ist das gut genug und wenn die
Schaltung erst mal läuft, dann braucht diesen ganzen bereich kein Mensch
mehr - das Adapterkabel wird einfach abgesteckt und die Platine ist
wieder "sauber".
> Da ich am Ende den genauen Stromverbrauch der Gesamt- bzw. der> 2. Schaltung wissen möchte, kann ich über Jumper K7,K8 ein Amperemeter> in Reihe schalten
Das Amperemeter schleifst du extern ein. Kein Grund dafür einen Jumper
vorzusehen.
Je mehr Jumper du auf der Platine hast, desto mehr Fehlerquellen gibt
es. Daher willst du alles, was du über eine externe Beschaltung machen
kannst, auch extern halten.
> So kann ich, falls etwas noch nicht funktioniert ....>> Kauf die Teile ein und steck sie auf einem Steckbrett zusammen. ...
.... auf dem Steckbrett umstecken und die Schaltung debuggen. Läuft
alles, dann zeichnest du die erste Platinenversion.
Da mir die Platinenherstellung sowieso nichts kostest und ich mir die
mühsame Fummellei auf einem Steckbrett (Fehlerquellen sind hier oft
garantiert bei vielen Verkabelungen) sparen wollte habe ich eben gerade
soviel wie möglich versucht auf eine Platine unterzubekommen.
Die Verbindung zu der zweiten Platine soll sowieso irgendwann wegfallen,
da dann auch der zweite Schaltungsteil (wird parallel von einer anderen
Gruppe entwickelt) mit auf der Hauptplatine platziert wird.
In wie weit sind Jumper denn Fehlerquellen? Kommt es z.B. öfter vor,
dass der Kontakt nicht optimal ist oder was ist der Grund?
Bernd schrieb:> In wie weit sind Jumper denn Fehlerquellen?
Wackelkontakte. Jumper die gesteckt sind und nicht gesteckt sein
sollten. Jumper die nicht gesteckt sind und gesteckt sein sollten.
Jumper die sich unter Umständen durch Vibrationen losrütteln. etc. etc.