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
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
Ja dann brauchst du doch praktisch nur den atmel und nen ftdi chip, dann hast du auch gleich den virtuellen comport
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.
:
Bearbeitet durch Moderator
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.
Bernd schrieb: > Hört sich ja auch nicht schlecht an. Wäre natürlich auch einfacher. > Den MPC2210 kann ich leider niergendwo finden. MCP2210 ^^^ sorry, Typo http://de.farnell.com/microchip/mcp2210-i-so/ic-usb-to-spi-wandler-20soic/dp/2078574 http://de.mouser.com/ProductDetail/Microchip-Technology/MCP2210-I-SO/?qs=sGAEpiMZZMsozux2%2fwCmW0%252b88ohExGZ9 http://de.rs-online.com/web/p/multiprotokoll-transceiver/7617204/ Und wenn Du unbedingt selber programmieren willst, dann nimmst Du halt einen PIC18F14K50 (das ist der gleiche Chip, nur leer) und programmierst Dir das ganze selber zusammen. Den USB-Stack liefert Microchip Dir fix und fertig. Wobei ich für die Entwicklung eher einen PIC18F25K50 oder einen PIC18F27J53 nehmen würde, weil Dir das die Arbeit erleichtern würde. Beim 14K50 sind USB und ICSP(Debug- und Flash-Port) auf den gleichen Pins, das ist speziell am Anfang lästig, spart aber in der Serie Pins und damit Geld. Der PIC18F27J53 hat sowohl Hardware-USB als auch 12 BIT ADC eingebaut - der externe ADC wäre da also überflüssig. Von der Hardware wäre das am einfachsten - nur ein 28 Pinner, wo alles drin ist. fchk
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.
:
Bearbeitet durch User
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.