Hi Leute, Mein aktuelles Projekt ist es eine Art Oszilloskop zu bauen. Dazu verwende ich ein sainsmart 3,2'' tft Display (mit shield) und ein sainsmart mega 2560 Entwicklungsboard. Meine Messwerte habe ich bereits so manipuliert dass ich genau genug +/-28v messen kann. Die Darstellung auf dem tft wird vermutlich auch eine Herausforderung, aber damit beschäftige ich mich wenn ich folgendes Problem gelöst habe: Zum Einlesen der Werte verwende ich den integrierten ADC. Mein Problem ist nun, dass ich das Display aktualisieren muss während ich Messen will. Wenn ich das Display aktualisiere kann ich wahrend dessen keine ADC Werte speichern, denke ich. Deshalb folgende Fragen.. 1.Frage: hat jemand eine Idee wie lange es dauert ein tft Display zu aktualisieren? 2.Frage: ist es realistisch eine Aktualisierung des Displays während eines Zyklus des ADCs zu machen, den ich auf möglichst hoher Geschwindigkeit samplen lasse? (ich vermute nein) 3.Frage: könnte ich vielleicht durch Interrupt die Kommunikation zum kurz Display unterbrechen und schnell den ADC Wert speichern? Denkt ihr damit kann das Display umgehen wenn eine kurze Verzogerung passiert? Das sind ja nicht viele Takte die dabei draufgehen.. Wäre cool wenn ihr mir helfen könnt. Lg Julian
Einziger Weg wäre den RAM vollzusamplen und dann aufs Display zu plotten. Ich vermute allerdings, dass dein Displaykram schon einiges vom RAM brauchen wird. Das wäre also eine äusserst beschränkte Art von Single-Shot-Oszilloskop. Keine Ahnung, ob man mit nem Interrupt einen halbwegs brauchbaren trigger für sowas hinbekommt, vielleicht schon. Dabei aber wieder so beschränkt, dass es einfach nur noch ärgerlich und nutzlos ist. Im großen und ganzen sehe ich kaum einen Nutzen in der ganzen Sache, selbst der Lerneffekt dürfte im Frust untergehen. Einerseits gibt es sicher andere Projekte, die mit dieser Hardware mehr Spaß und vielleicht sogar sinn machen, andererseits wirst du mit dem genannten niemals an die Leistungsfähigkeit der billigsten "Taschenoszilloskope" rankommen. Eher würde ich mir nen Adapter für eine Soundkarte stricken, das soll ja auch möglich sein. Als Anfänger evtl. ne USB Soundkarte und etwas in eine galvanische Trennung des USB investieren.
Juli D. schrieb: > 1.Frage: hat jemand eine Idee wie lange es dauert ein tft Display zu > aktualisieren? Kommt total drauf an, aber irgendwas im ms-Bereich. > 2.Frage: ist es realistisch eine Aktualisierung des Displays während > eines Zyklus des ADCs zu machen, den ich auf möglichst hoher > Geschwindigkeit samplen lasse? (ich vermute nein) Nein, wenn du irgendeine Bandbreite erreichen willst die den Namen "Oszilloskop" auch nur so gaaaaanz grob verdient hat. Auf die Art wirst du auf keine 200 Hz kommen vermute ich, damit kannst du nichtmal die Netzspannung vernünftig anschauen. > 3.Frage: könnte ich vielleicht durch Interrupt die Kommunikation zum > kurz Display unterbrechen und schnell den ADC Wert speichern? Denkt ihr > damit kann das Display umgehen wenn eine kurze Verzogerung passiert? Das > sind ja nicht viele Takte die dabei draufgehen.. Vergiss es. Keine Chance. Halbwegs sinnvolle Datenraten für den ADC für sowas fangen bei 1MSa/s oder so an, dazwischen kannst du gar nix tun, und wenn du nicht auf mindestens so eine Rate kommst lohnt sich das Projekt imo nicht, weil du kein Signal der Welt zuverlässig damit vermessen kannst. Solche Datenraten kannst du auch nicht mit einem Interrupt pro Sample aufnehmen. Das Aufnehmen der ADC-Daten in den Speicher muss im Hintergrund passieren, per DMA oder so. Der Trigger sollte ebenfalls in Hardware sein (der LPC43xx, der einzige uC den ich einigermaßen gut kenne, hat zum Beispiel in seinem SGPIO-Modul eine Compare-Einheit, mit dem er einen Datenstrom im Hintergrund mit einem Wert vergleichen kann und dann einen Interrupt auslösen oder so). Wenn ein Trigger-Event passiert, kannst du die Datenerfassung unterbrechen, den Buffer auf den Bildschirm malen, und dann weitersampeln. So eine Totzeit ist für Oszilloskope normal und akzeptabel. Gruß, Sven
:
Bearbeitet durch User
Okay danke schonmal für eure Hilfe. Das Problem ist nur dass ich das als erstes Projekt fürs Modul Mikrocontrollertechnik habe. Wie jede andere Gruppe habe ich das Thema vorgeschlagen und mein Dozent war der Meinung dass man das machen kann. Wenn es nicht so Leistungsfähig ist wie ein richtiges Oszilloskop ist das nicht so schlimm. Der Lernefdekt steht im Vordergrund. Was haltet ihr davon wenn ich das ganze etwas abspecke und auf zweo funktionen reduziere? Funktion 1: live Messung, in der die aktuelle Amplitude dargestellt wird (video kommt gleich) https://www.youtube.com/watch?v=122pIu_VeXA Funktion 2: relativ hochfrequente Aufnahme eines Signals, das dann im Nachhinein ausgewertet werden kann? Hier gibt man vorab in ein dialogfenster ein wie schnell gesamplet werden soll und wie lange. Dannach wirds auf dem display dargestellt?
:
Bearbeitet durch User
Hast du bereits brauchbare Erfahrung mit Mikrocontrollern? Deine Fragen lassen da starke Zweifel aufkommen. Welche Programmiersprache soll/ muss verwendet werden? Solltest du ohne Erfahrung das TFT in C ohne fertige Bibliotheken etc. ansteuern müssen, dann gute Nacht. Ganz ehrlich, bau erstmal ein Voltmeter mit nem HD44780, dann sehen wir weiter...
Wenn du es ganz ganz unbedingt willst, KÖNNTE man 3 Controller nehmen. Einen fürs TFT und zwei, die abwechselnd samplen und Daten zum TFT Controller schieben. Ein Dozent, der sowas zulässt, ist aber entweder ahnungslos oder ein Sadist. Schlimmer sind eigentlich nurnoch diejenigen Dozenten, die beide Eigenschaften in sich vereinigen. Soll es geben.
Vielleicht wäre es einfacher und auch sinnvoller, das Projket etwas zu ändern und das Gerät für Langzeitaufnahmen mit einstellbarer langsamer Messung zu programmieren.Mit der Möglichkeit, die Messwerte dann auf einer SD Speicherkarte zu speichern ,über das Display grafisch anzuzeigen und später auf den PC zu übertragen, hast du bestimmt schon genug Herausforderungen für den ersten Kontakt mit Microkontrollern. Deine Anforderungen sind einfach zu hoch für die eingesetzte Hardware und als Anfängerprojekt ein wenig sportlich. Langsame Messraten, aber dafür vielleicht mit höhere Auflösung und Mittelung der Werte sind da schon einfacher umsetzbar. Das wäre jedenfalls auch noch wirklich für etwas nützlich sobald man Messwerte ohne PC aufzeichnen will, welche über sehr lange Zeiträume aufgezeichnet werden sollen. (Lade- Entladekurven von Akkus, Wetterdaten, ...) Gruß Thomas
Juli D. schrieb: > Wenn es nicht so Leistungsfähig ist wie ein richtiges Oszilloskop ist > das nicht so schlimm. Das kannst du sowieso komplett vergessen. Bei einem echten Oszi misst man die Anzahl aufgenommener Messwerte pro Sekunde in Milliarden und das hat diverse verschiedene Eingangsstufen für verschiedene Spannungsbereiche etc ... sowas allein zu bauen ist eine Lebensaufgabe. > Funktion 1: live Messung, in der die aktuelle Amplitude dargestellt wird > (video kommt gleich) https://www.youtube.com/watch?v=122pIu_VeXA Das sollte machbar sein, wenn man nur 20 Messwerte pro Sekunde braucht ist alles nicht so schwierig. Das ist halt bloß in der Praxis wegen dem Aliasing-Effekt ziemlich bis völlig nutzlos. https://de.wikipedia.org/wiki/Alias-Effekt Trotzdem ist, wie schon gesagt wurde, allein das mit Anstreuerung des LCDs etc. schon ein großes und aufwendiges Projekt.
Sven B. schrieb: > Bei einem echten Oszi misst > man die Anzahl aufgenommener Messwerte pro Sekunde in Milliarden Nun, nun, schauen wir mal... https://de.wikipedia.org/wiki/Vors%C3%A4tze_f%C3%BCr_Ma%C3%9Feinheiten#SI-Pr.C3.A4fixe
Als Student im 2 jahr habe ich von schulischer Seite aus keine Erfahrung. Was ich mit microcontrollern bisher selbständig gemacht habe beschränkt sich auf lcd Ansteuerung 16x4, adc Auswertung (Spannungsmessung), Menustrukturen auf dem lcd Display, pwm (hardware)... Ich schreibe in c und werde natürlich eine Bibliothek für das tft verwenden. Aber wie ich schon geschrieben habe befasse ich mich damit nachdem ich das oben genannte problem lösen konnte. Und @watzlaff guetzlaff sowas hilft mir nicht. Ich habe das Thema genannt und bin jetzt in dieser Situation. Da gibts kein zurück.
Juli D. schrieb: > Wenn es nicht so Leistungsfähig ist wie ein richtiges Oszilloskop ist > das nicht so schlimm. "Rolling" oder "Scan" Mode ist bei 'echten' Oszilloskopen ein Feature. :-) > Funktion 2: relativ hochfrequente Aufnahme eines Signals, das dann im > Nachhinein ausgewertet werden kann? Hier gibt man vorab in ein > dialogfenster ein wie schnell gesamplet werden soll und wie lange. Dialogfenster sind umständlich. Drehencoder oder Plus-/Minus-Knöpfe sind benutzerfreundlicher (und für dich einfacher), und die Länge ist halt soviel, wie auf den Bildschirm (oder in den Speicher) passt. Und um welches konkretes Display geht es denn?
:
Bearbeitet durch User
Also danke schonmal an alle.. Auch an watzlaff guetzlaff, hatte deinen 2. Post noch nicht als ich geschrieben habe. Ich denke ich werde mich zunächst auf die Darstellung wie im video konzentrieren.
Ich habe dieses Display: http://www.sainsmart.com/sainsmart-3-2-tft-lcd-display-sainsmart-tft-lcd-adjustable-shield-for-arduino-2560-r3-1280-a082-plug.html
http://www.ulrichradig.de/home/index.php/avr/avr-dso Schau dir das mal sehr genau an. Du hast hoffentlich nicht explizit angegeben dass du den interen ADC des Atmega nehmen willst. Mit Code und allem. Dann musst du das nur noch mit deinem Display hinkriegen. Evtl. wirklich 2 Controller. http://www.ulrichradig.de/home/uploads/File/AVR_DSO/MyScope.zip
Juli D. schrieb: > könnte ich vielleicht durch Interrupt die Kommunikation zum > kurz Display unterbrechen und schnell den ADC Wert speichern? Denkt ihr > damit kann das Display umgehen wenn eine kurze Verzogerung passiert? Der Controller ist ein SSD1289. Er hat eigenes RAM, in das du asynchron den Bildschirminhalt schreibst. Laut Datenblatt gibt es für keinen Teil der Protokolle (parallel oder SPI) eine Mindestgeschwindigkeit, also kannst du jederzeit eine Pause einlegen.
Die "Soundcard Scopes" verwenden Daten, die mit rund 44kHz gesampelt werden. Das sollte mit eigentlich jedem µC auch mit dem internen ADC mühelos zu erreichen sein. Und wärend der ADC sampelt und konvertiert kann man in Ruhe den letzten Punkt malen. MfG Klaus
Dann braucht man aber wenigstens noch einen Tiefpassfilter davor, wie die Soundkarte.
Sven B. schrieb: > Dann braucht man aber wenigstens noch einen Tiefpassfilter davor, wie > die Soundkarte. Nicht eher ein ein Highpassfilter? An meiner Soundkarte kann ich keine Gleichspannung anlegen, bzw ich kann schon, aber nach ner Zeit wird der Wert immer kleiner und kleiner. Was ja doch eher dafür spricht, dass die Tiefen dieses Filter NICHT passieren können. --> Lowcutfilter wenn man unbedingt die Tiefen im Namen haben will, oder halt ein Highpass/Hochpassfilter.
Naja, das ist eher ein DC-Block bei der Soundkarte ... klar, kann man auch als Hochpass bezeichnen. Wichtig ist aber der Tiefpass bei der halben Samplerate.
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.