Ich stell Euch mal ein einfaches NF-DIGITAL-OSZILLOSKOP zur Verfügung. Kennwerte: - 800 Datenpunkte - bis ca. 5KHz kaum sichtbare Digitalisierungsfehler bei Verwendung eines besseren µC wären wesentlich höhere Frequenzen möglich Es ist eine relativ einfache Beschaltung eines ATmega8. Zur PC-Software: - in dieser Version bis 1000 Datenpunkte möglich - Sollte die *.exe nicht laufen, dann bitte komplett installieren (Disk 1 bis 3) Viel Spaß wünscht Euch Bernhard
Für was braucht man sowas ? Eine Soundkarte verfügt a) über eine höhere Bandbreite (bis zu 50kHz) b) über eine höhere Auflösung (bis zu 24bit) c) über einer schnellere Aktualisierungsrate (> 100fps) d) über eine größere Aufzeichnungstiefe (ein paar 100GByte, eben bis die Festplatte voll ist) Warum geht die Schaltung nur bis 5kHz ? Ich habe mit dem mega8 schon über 20kHz gemessen, ohne große Messfehler, und auch laut Datenblatt sollen mindestens 15kHz bei 10bit und bei 8bit über 20kHz möglich sein. Wiso den AVR auf 20MHz übertakten ? 18,432MHz ermöglichen eine Baudrate von 115,2kBaud und der AVR wird nicht so stark übertaktet. Hast du die Windows Software selber geschrieben ? Wenn ja, dann nur so als Anregung, wie man das ganze erweietern könnet: Erweiter die Leitung auf eine Bidirektionale Verbindung zwischen PC und AVR, so dass der PC Befehle senden kann: So lassen sich per PC Samplerate, Eingangsteiler, AC/DC/GND Kopplung umschalten, eben wie bei einem echten Oszilloskop.
Hallo Benedikt, Du hast Recht, eine PC-Soundkarte bietet unumstritten einige Vorteile. Danke für Deine Tipps, wie man dieses Projekt noch verbessern könnte, werd' mal darüber nachdenken. Mein Beitrag ist u.a. der Grundstein für ein kleines Digitaloszilloskop. Mit wenigen Handgriffen lässt sich z.B. ein LCD-Grafik-Modul ansteuern. Warum geht die Schaltung nur bis 5kHz ? Sie geht auch ohne weiteres höher, Frequenzen von 20 kHz lassen sich auch darstellen, aber da bleiben für eine Periode (1/20kHz) nur wenige Datenpunkte zur grafischen Darstellung. Ein Sinussignal sieht dann schon etwas seltsam aus. Ich habe den Vorteiler vom ADC verkleinert, also kürzere Mess-Intervalle, jedoch traten (selbst bei 8 Bit) selsame Nebeneffekte auf, z.B. "Nadeln" auf einem Sinussignal, die Ursache konnte ich mir auch nicht erklären...? Wieso den AVR auf 20MHz übertakten ? Damit der Vorteiler vom ADC groß gewählt werden kann, um weitere Operationen durchführen zu können.
Hallo,
Ich finde es nicht schön, wie Bernhards Programm
hier sofort von Benedikt kritisiert wird.
>> Für was braucht man sowas ? Wieso nur 5KHz ? << usw.
So etwas wirkt (jedenfalls auf mich) ziemlich demotivierend.
Ich habe keine Lust, meine Progrämmchen hier ins Forum
zu stellen, wenn ich damit rechnen muss, dass sie sofort
von einem Profi niedergemacht werden.
Bernhard hat sich mit dem NF-Oszi sicher eine Menge Mühe gegeben,
und der eine oder andere wird das Programm bestimmt
interessant finden und davon lernen können.
Perfekt ausgearbeitete Lösungen, die man nur 1:1 übernimmt,
aber selbst nicht versteht, bringen einen Einsteiger
dagegen nicht weiter.
Mfg Willi
> Ich finde es nicht schön, wie Bernhards Programm > hier sofort von Benedikt kritisiert wird. 100% ACK!! Tja, man muß halt schon mindestens nen 40MHz Logicanalyzer entwickeln, um hier Anerkennung zu erlangen. > Perfekt ausgearbeitete Lösungen, die man nur 1:1 übernimmt, > aber selbst nicht versteht, bringen einen Einsteiger > dagegen nicht weiter. Und aus diesem Grund habe ich die Tastenentprellung, die Drehgeberauswertung sowie die RC5-Decoderroutine NICHT von Peter Dannegger übernommen und ich kam auch zum gewünschten Erfolg.
Ja ja, je besser man wird bzw. je mehr Erfahrung und Wissen die Leute auf einem Gebiet besitzen, desto schneller schlägt eine gewisse Art von Arroganz durch. Habe das schon sehr oft bei Kollegen beobachtet.
>Ich finde es nicht schön, wie Bernhards Programm hier sofort von Benedikt kritisiert wird. Tut mir leid, das war nicht meine Absicht ! Das mit den 5kHz war ein Missverständniss, ich dachte das bezog sich auf die Samplerate. Ich hatte auch sowas schon öfters mal gebaut, aber es immer wieder schnell aufegegeben, da eine Darstellung der Daten in einem Windows Programm nicht meine Stärke ist. Falls interesse besteht, wäre ich gerne bereit die Software auf dem AVR etwas zu optimieren und weitere Features hinzuzufügen, wenn Bernhard diese in der Windows Software unterstützt. So wäre vor allem eine DC Kopplung des Eingangssignals sinnvoll, denn das bieten Soundkarten nicht (was micht oft ziemlich nervt).
Hallo Benedikt, es wäre schön, wenn Du die Software auf dem AVR optimieren könntest, um die Windows - Software kümmere ich mich gern. Um einen bidirektionalen Datenaustausch zu realisieren, müsstest Du mir nur sagen, wie das Sendeprotokoll der Daten vom PC gestaltet sein muss? Bernhard
Ein wesentlicher Nachteil einer Soundkartenlössung ist, dass man nur AC Kopllung hat. Für langsame Messungen kann so ein "Oszilloskop" recht gut geeignet sein.
Hab mir gerade mal die Windows Software angeschaut, zumindest habe ichs versucht. Die Installation bricht leider immer ab: DIGITAL_OSZI_2005.ex1 nicht gefunden. Mich wundert es, dass nur 5kHz möglich sind. Der ADC läuft mit 196kHz Samplerate, da sollte man problemlos einen Sinus bis 20kHz erkennen können. Beim AVR Code kann man ziemlich viel optimieren. z.B. das Schieben der 10bit vom ADC macht der ADC selbst, wenn man ADLAR einschaltet. Hat es eigentlich einen Grund wiso adr_DATEN_SPEICHER Erst bei 0x060 + 100 anfängt ? Wenn man ab 0x60 beginnt, sollten eigentlich auch 1000 Messwerte in den Speicher passen. Dann hat man noch 24 Bytes für den Stack was ausreicht. Das Sendeprotokoll kann man eigentlich ziemlich einfach halten. Ich würde einfach von 0 an jedem Befehl einen Wert geben: 0 Messung starten 1 ADC Teiler auf 2 setzen 2 ADC Teiler auf 4 setzen 3 ADC Teiler auf 8 setzen 4 ADC Teiler auf 16 setzen 5 ADC Teiler auf 32 setzen 6 ADC Teiler auf 64 setzen 7 ADC Teiler auf 128 setzen 8 ADC Teiler auf 256 setzen 9 ADC Teiler auf 512 setzen 10 Eingangsteiler 1:1 11 Eingangsteiler 10:1 12 Eingangsteiler 100:1 15 Eingang AC Kopplung 16 Eingang DC Kopplung 17 Eingang auf GND
>Samplerate, da sollte man problemlos einen Sinus bis 20kHz erkennen Ich habe es vor einiger Zeit getestet.Den internen ADC kann man zwar übertakten aber bei 20kHz ist die äußerste grenze dessen was man darstellen kann. Hier ein Beispiel,8Mhz Quarztakt, Vorteiler CLK/2, Signal 3.15kHz,255 Messpunkte, das Signal ist stark verzerrt: http://www1.kielnet.net/home/marc.in/bilder/takt8Mhz_prescx2_sin3.15kHz.png Seit ca.3 Monaten arbeite ich auch an einem digital Oszilloskop, ich verwende allerdings externen AD-Wandler um höhrere Samplingrate zu erreichen.
Hab die Installation nochmals überprüft, bei mir kam die geleiche Fehlermeldung. Hab jetzt alles per Hand zusammen-ge-zipt, müsste jetzt laufen. Sorry >>adr_DATEN_SPEICHER Erst bei 0x060 +100 anfängt ? Ursprünglich sollte der freie Bereich noch für andere Zwecke verwendet werden >>Das Sendeprotokoll kann man eigentlich ziemlich einfach halten. ...genau, machmal ist einfach doch am Besten. Ich werde das Windows-Programm mit diesem Protokoll umgestalten
Bei den drei vorhergehenden Installations-Disketten hat sich beim erstellen der Disketten ein nicht nachvollziehbarer Fehler eingeschlichen. UPDATE DISK1
Bitte den Inhalt aller Disketten in ein Verzeichnis kopieren und dann installieren. UPDATE DISK2
Irgendwie läuft die Software bei mir nicht so recht: Nach dem starten zeigt das Programm einmal die empfangenen Werte an und reagiert danach nichtmehr. Die CPU Auslastung steigt dann auf 100% an.
Beim Starten des Windows 95/98 Programms wird zuerst eine Simulation gestartet und eine Sinuskurve dargestellt. Anschließend versucht das Programm COM1 zu öffnen und wartet dort auf Daten. Kann COM1 nicht geöffnet werden, dann erscheint die Textzeile (oben links)rot. Man kann dann einen anderen Port eingeben. Mit welchem Betriebssystem arbeitest Du?
Bernhard, bitte verstehe mich nicht falsch aber warum braucht man für so ein Programm 3 Disketten ??? Ich habe hier, zwar unter Linux, etwas änliches und es hat grade mal 50KB. Ein Windowas Programm wäre aber auch nicht viel grösser (wenn nicht kleiner).
Ich verwende WinXP Die Sinuskurve erscheint, dann laufen die Zahlen links oben in der Ecke mehrmals hoch, mein gemessenes Signal erscheint korrekt und dann tut sich garnixmehr, außer dass mein CPU Lüfter anfängt hochzufahren... Die Textzeile bleibt grün.
> Bernhard, bitte verstehe mich nicht falsch aber warum braucht > man für so ein Programm 3 Disketten ??? Naja, kommt halt drauf an, in welcher Sprache man programmiert, oder? Die ganzen Runtimebibliotheken müssen ja mitgeliefert werden.
Ich habe das Programm in Visual Basic 5.0 geschrieben, leider entstehen so viele Installations-Dateien für die Komplett-Installation, da man nicht weiß, ob der Nutzer sie schon hat. Bei weiteren Updates, brauchen sie natürlich nicht mitgeliefert werden. Die eigentliche Programm-Datei ist nur wenige 100 kB groß. Testen konnte ich sie nur unter Win 95 und 98, ich hoffe, dass sie bei anderen Systemen auch funktioniert. Hier ein neues Update (Version: 1.0.24) Was ist neu? Bei Programmstart muss manuell der Button "Start" betätigt werden, damit die Daten vom µC empfangen werden können.
Hallo Ich habe mir dein Programm bisher nur sehr kurz angesehen und hab noch einen kleiner Vorschlag um die Sampelrate zu erhöhen: Die Messdaten direkt abspeichern und erst beim Übertragen berechnen und umwandeln. Viel Spass mit deinem Projekt Moin
@moin Die Samplerate kann man nicht mehr erhöhen, der ADC läuft schon mit etwa 1300% der maximalen Samplerate... Was man aber gut optimieren kann ist ADLAR zu aktivieren und die Speicher voll Funktion leicht anzupassen. So bleibt sogar noch genügend Rechenleistung um das DC Offset direkt vor dem Speichern zu entfernen.
Ob kleines Progrämmchen oder Riesenprogramm, Ihr habt alle meine vorbehaltlose Bewunderung - ich kann gerade mal eine LED blinken lassen, mehr nicht... :-) Stephan.
@Stephan Jeder fängt mal klein an, das kommt schon noch. Ich habe damals ein paar Stunden gebraucht, um meine erste LED an einem Mikrocontroller blinken zu lassen.
@Benedikt Läuft denn die Windows-Software oder hängt sie sich immer noch auf?
Ich drücke start, mein gemessenes Signal erscheint und dann hängt das Programm.... Auf mein zweiten PC (mit Win98SE) genau dasselbe, nur dass hier nicht das Programm sondern gleich Windows komplett abstürzt.
@Benedikt Das scheint ein Betriebssystem-Problem zu sein, manchmal funktioniert die Abwärts-Kompatibilität von Windows doch nicht so. Ich denk mal darüber nach, ob ich das Windows Problem irgendwie umgehen kann. Leider kann ich nur in Win98 (4.10.1998) müsste SE Version sein, programmieren.
>Das scheint ein Betriebssystem-Problem zu sein
Wiso ? Es geht bei mir unter WinXP und unter Win98SE nicht.
Daher liegt es kaum am Betriebssystem.
> Es geht bei mir unter WinXP und unter Win98SE nicht.
Also doch ein Betriebssystem-Problem,
sonst würde es doch unter beiden Systemen nicht laufen,
oder liege ich da falsch?
Ist aber gut zu hören, dass das Windows-Programm auch unter WinXP
läuft.
Win98SE -> geht nicht WinXP -> geht nicht -> Unabhängig vom Betriebssystem geht es nicht.
@Benedikt Achso, jetzt habe ich's verstanden. Hatte Deine Antwort nicht richtig gelesen, sorry. Hoffentlich fällt mir was ein, wie ich ich das Problem der Windows Software beheben kann.
@Benedikt die Installation ging bei mir auch nicht: .....ex2 oder so nicht gefunden. Nach Aufruf der exe datei vom Download lief das Teil (XP SP2), zumindestenz die Window-Geschichte. AVR habe ich noch nicht programmiert. Ich finde es eine gute Programmieraufgabe so etwas zu proggen. Haste fein gemacht, Bernhard !! Kanste das auch "Parallel" mit zum Beispiel 2 oder besser 3 mal 8 bit aus einem schnellem AVR. Dann wäre es der viel beschriebene Logiganalyser, zwar für langsame Aufzeichnungen, aber dafür preiswert. Ev kann mann das ja mit 'nem CPLD schnell machen, oder die gelesenen Bits in ein ext. Ram speichern und nach dem Einspeichern wieder auslesen und übertragen, oder gleich über den Paralellport einlesen. Du hast ja netterweise das Protokoll (beim Oscar) offen gelegt, wenn du es wieder so machst, könnte man daraus ein Gemeinschaftsprojekt machen ?? mfG
Ich denke, es ist eher ein Betriebssystemproblem bei Benedikt. Ich habe es unter Win2000, WinXP (SP2) und Win98 getestet, läuft wie nei Eins!
@Margarine
>Win2000, WinXP (SP2) und Win98 getestet, läuft wie nei Eins!
Danke für Deine wertvolle Info.
In den nächsten Tagen werde ich die Win-Software, nach Benedikts
-Protokoll, bidirektional umschreiben, so dass man vom PC aus den µC
steuern kann.
@Bernhard Könntest du mal eine fertige Hex Datei für den uC posten ? Dann kann ich ausschließen, dass mein AVR Studio mist gebaut hat.
@Benedikt
>Könntest du mal eine fertige Hex Datei für den uC posten ?
gern; und funktioniert sie?
@Bernhard Leider geht es immer noch nicht. Ich hatte es bisher nur am PC simuliert und die Daten an einen zweiten PC gesendet, auf dem dann die Software läuft. Jetzt habe ich mal schnell eine Schaltung mit dem mega8 aufgebaut, aber immer noch dasselbe problem. Die Daten kommen korrekt an (lade ich die empfangenen Daten in ein Audioprogramm sehe ich einen schönen Sinus. PS: könntest du die Linie mit der das Signal dargestellt wird dünner machen ? Im Audioprogramm sehe ich einen sauberen Sinus, im Oszilloskop nicht viel brauchbares...
@Benedikt >könntest du die Linie mit der das Signal dargestellt wird dünner machen ? Ich habe Dir die Linie etwas dünner gemacht, hoffentlich ist sie jetzt nicht zu dünn? Und zusätzlich links oben ein Button installiert, um den Port besser zu konfigurieren. >Jetzt habe ich mal schnell eine Schaltung mit dem mega8 aufgebaut, >aber immer noch dasselbe problem. Könntest Du vielleicht mal ein Hard-Coppy Deines Bildschirmes machen, damit ich die Kurve mal genau sehe, wenn Du einen Sinus einspeist?
>Ich habe Dir die Linie etwas dünner gemacht, hoffentlich ist sie jetzt
nicht zu dünn?
Jetzt ist sie optimal ! Man erkennt sogar den 10kHz Sinus noch recht
gut.
Ich starte das Programm, das läuft stundenlang problemlos, bis der
erste Datenblock empfangen und angezeigt wurde, dann hängt es.
Hallo, ich muss mal Fragen wodurch die 800 Datenpunkte vorgegeben wird. Soll das die Samplefreq. darstellen ? Gruß, Dirk
Die 800 Datenpunkte sind einfach 800 Messwerte die bei jeder Messung gemacht werden. Theoretisch sind sogar 1000 möglich.
Hi, danke Benedikt also werden diese wohl genutzt um eine Mittelwertbildung zumachen. Gruß, Dirk
Mittelwertbildung ? Es werden einfach nacheinander die Werte per ADC gemessen und dann durch Linien verbunden angezeigt.
@ Bernhard, Ich habe 2 AD-Wandler als Oszi direkt am Par-Port hängen. Leider bin ich noch nicht dazugekommen, ein ordentliches Windows-Programm zu schreiben. Deshalb wäre ich an deimen VB-Quellcode interessiert. Willst du den veröffentlichen? Thomas
@Thomas >... Par-Port hängen..... >....wäre ich an deimen VB-Quellcode interessiert... Meine WIN-Software ist für den COM-Port geschrieben. Trotzdem Interesse? Bernhard
Das Auslesen der Daten vom LPT funktioniert bei mir. Was mir fehlt, ist eine GUI mit den Routinen der grafischen Darstellung der eingelesenen Daten. Insofern hab ich noch Interesse an deinem VB-Project und würde dort dann meine Einlese-Routinen einsetzen. Thomas
@Bernhard Hallo Hätte auch Interesse an dem VB-Quellcode. Kannst du ihn nicht mal hier einstellen oder mir zukommen lassen. MFG Dieter
Respekt für die Leistung. Ist die HEX vom 30.08.2005 18:45 die aktuelle und funktioniert sie? Ab wann ist denn ein Update zu erwarten?
Was habe ich denn jetzt falsch gemacht? Ich benutze WinXP SP2. Das Programm (1.0.24) läuft. Ich habe die HEX (welche hab ich schon beschrieben)in den M8 geflasht. Anstelle des 20MHz Oszi verwende ich einen normalen Quarz weil nix anderes da war. Ich behaupte mal, das wirkt sich nur auf die Messgenauigkeit aus. Die LED blinkt mit etwa 2Hz. Das Programm scheint was zu empfangen. Nach Daten: ändert sich die Zahl ab und zu. Aber es wird nichts gemessen. Ja, ich habe auf Start gedrückt und der M8 ist auf Quarz eingestellt.
abo arbeite zwar mit Delphi, trotzdem nette Sache *!RESPEKT!*
@Marco kleinerer Quarz: mindestems andere Baudrate ! Haste das bedacht? mfg
Sorry, hab ich wohl etwas missverständlich beschrieben. Der Quarz hat auch 20MHz. Aber es ist kein Quarzoszilator, sondern ein 'normaler' Quarz. Die Fusebits sind dafür auch gesetzt, Kondensatoren habe ich auchdran. Der AVR arbeitet ja auch. Die LED blinkt und es werden Daten zum PC gesendet. Aber halt nicht Spannung gemessen :( Ich weiss ja auch nicht, ob die HEX die richtige ist. In der ZIP war ja auch eine ASM, aber die müsste ich erst compilieren. Und wenn die HEX nicht die richtige ist, warum wurde sie hochgeladen?
@Thomas
@Dieter
>... Hätte auch Interesse an dem VB-Quellcode.
Ich hoffe, ich habe ihn ausreichend dokumentiert?
Bernhard
@Marco >Ist die HEX vom 30.08.2005 18:45 die aktuelle und funktioniert sie? Ja, sie ist die aktuelle und funktioniert >Ab wann ist denn ein Update zu erwarten? Benedikt und ich, wir wollen dieses System noch bidirektioal gestalten, wird aber noch einige Tage dauern. > Ich weiss ja auch nicht, ob die HEX die richtige ist. In der ZIP > war ja auch eine ASM, aber die müsste ich erst compilieren. Und > wenn die HEX nicht die richtige ist, warum wurde sie hochgeladen? Die Hex ist direkt aus der ASM entstanden > Der AVR arbeitet ja auch. Die LED blinkt und es werden Daten zum PC > gesendet. Aber halt nicht Spannung gemessen :( Ich hoffe, dass die Windows-Software bei Deinem Betriebssystem richtig funktioniert, denn ich habe sie in Win98 erstellt. Überprüfe doch mal mit einem Terminal-Programm, welche Daten vom µC gesendet bzw. vom PC empfangen werden. Vielleicht kann man dann den Fehler schon einkreisen?
Danke Bernhard für die Antwort(en)! Wenn es bidirektional funktioniert, kommt danach die Version für ein LCD? Somit wäre das ganze unabhäniger. In deinem Programm steht unter den Einstellungen ja Daten: Da wechseln sich Zahlen ab zu anfang. Leider habe ich auf die schnelle kein Terminalprogramm gefunden, wo ich 56000baud einstellen kann. Deshalb kann ich z.zt. noch nicht sagen, was wirklich ankommt.
@Marco >kommt danach die Version für ein LCD? Ist gerade in Arbeit, das LCD-Grafik-Modul habe ich vorhin aus der Original-Verpackung heausgeholt(EA DIP 128-6, KS0108).Sind aber doch eine Ganze Menge Pins, die verdrahtet und angesteuert werden müssen. Hatte es mir einfacher vorgestellt. >kein Terminalprogramm gefunden, wo ich 56000baud einstellen kann. Setze doch die Baud-Rate im Assembler_Programm auf den gewünschten Wert. > In deinem Programm steht unter den Einstellungen ja Daten: Da > wechseln sich Zahlen ab zu anfang. In diesem Feld wird die Anzahl der im Puffer befindlichen (und noch nicht aufbereiteten) Daten dargestellt
Hallo Bernhard Danke für den VB Code. Das Porgramm startet normal, wenn ich dann auf Start drücke, liest es die Daten einmal ein und hängt sich dann auf. Daten werden vom uC weitergesendet. Habe mal im Quellcode geschaut, finde den Fehler im Momnet noch nicht. Habe WIN XP SP 2 und einen USB -->> RS232 Wandler Gruß Dieter
Wenn ich Assembler könnte, hätte ich es ja gemacht. Ich habe mich davor immer mit BASCOM gedrückt ;) Ich weiss nicht, wie es in Assembler ist, aber in BASCOM bräuchte man einen kompletten Port um die Datenleitungen eines gLCDs anzusprechen. Und wenn ich mal so auf den Schaltplan schaue, wäre beim Mega8 kein Port da, wo nicht mind. ein Pin fehlt um auf volle 8 zu kommen. Und das EA beim Display hört sich so nach 60 und mehr an :( Ich werd mal AVR-Studio installieren und mein Glück probieren. Aber wenn der PC die Daten empfängt, wird die Software unter XP doch arbeiten, oder?
23 23 23 23 20 03 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 C0 23 23 23 23 20 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 23 23 23 23 20 03 00 00 00 00 00 00 00 00 00 00 00 00 00 23 23 23 23 20 03 00 00 00 00 00 00 00 00 00 00 00 23 23 23 23 20 03 00 00 00 00 00 00 00 00 00 00 00 23 23 23 23 20 03 00 00 00 00 00 00 00 00 00 00 23 23 23 23 20 03 00 00 00 00 00 00 00 00 00 23 23 23 23 20 03 00 00 00 00 00 00 00 00 23 23 23 23 20 03 00 00 00 00 00 00 23 23 23 23 20 03 00 00 00 00 00 23 23 23 23 20 03 00 00 00 23 23 23 23 20 03 00 00 00 00 23 23 23 23 20 03 00 00 00 00 23 23 23 23 20 03 23 23 23 E4 1E FE 23 23 23 23 20 FF 23 23 23 23 E0 E0 23 23 23 E3 20 E0 23 3F 23 3F BC E4 FC E3 FC FC E4 BC FC A4 FE FE Das sind die ersten paar Sekunden als HEX. Danach ist erstmal Ruhe, obwohl die LED noch blinkt.
Hallo Bernhard. Meine Programm läuft jetzt richtig. Der Fehler lag in der Public Sub ABFRAGE_AUF_HDD_SPEICHERN() und zwar erwartet er ein File auf Laufwerk C:\AUSGABE_OSZI.txt Ist dieses File nicht vorhanden, hängt sich das Programm bei mir auf. Also habe ich einfach ein leeres File mit dem Namen angelegt und los gehts. Vielen Dank für das schöne Porgramm und weiter so MFG Dieter
>und zwar erwartet er ein File auf Laufwerk C:\AUSGABE_OSZI.txt >Ist dieses File nicht vorhanden, hängt sich das Programm bei mir auf. Genau das war auch der Fehler bei mir ! Jetzt läuft es. @Bernhard Wie sieht es aus mit der neuen Version mit den unterschiedlichen Samplerates usw. ? Da die Software nun auch bei mir läuft, kann ich nun endlich die Software im AVR umschreiben. Wenn du schon dabei bist, kannst du noch weitere Befehle einbauen ? An das wichtigste hat nämlich niemand gedacht: Triggerung 020 Triggerwert senden (gefolgt von einem Wert im Bereich 0-255) 021 Triggerung bei steigender Flanke 022 Triggerung bei fallender Flanke
Was ich noch vergaß: 023 Triggerung aus Wenn AC Eingang aktiv ist, wird der Wertebereich automatisch auf -128...+127 gesetzt, bei DC auf 0...255
... ein neues Update (Version 1.0.25)..... @Dieter @Benedikt > ... Public Sub ABFRAGE_AUF_HDD_SPEICHERN() > und zwar erwartet er ein File auf Laufwerk C:\AUSGABE_OSZI.txt > Ist dieses File nicht vorhanden, hängt sich das Programm bei mir auf Danke für den sehr wichtigen Hinweis, ich habe gleich diese Prozedur und die Prozedur "Public Sub ANZAHL_DATENSÄTZE_BEGRENZEN()" verbessert. Anscheind kamen andere Betriebssysteme damit nicht zurecht. Nochmals Danke @Marco >.... wird die Software unter XP doch arbeiten, oder? Probier' bitte das neue Update mal aus?
@MARCO > ...bräuchte man einen kompletten Port um die Datenleitungen eines > ...gLCDs anzusprechen. Der komplette Port - das wäre der Idealfall, aber den haben wir beim ATmega8 nicht, das macht aber nichts, da man ja alle Pins, egal wo sie sich befinden, einzeln ansteuern kann und somit alle Pins des GLCD bedienen kann. Ist dann nur noch eine Frage der Software. > Und das EA beim Display hört sich so nach 60 und mehr an :( Leider ja > 23 23 23 23 20 03 01 01 01 01 01 01 01 01 ..... Sieht doch schon ganz gut aus, ich hoffe, dass Du mit dem neuen Update Deine Daten grafisch sichtbar machen kannst.
@Benedikt >Wie sieht es aus mit der neuen Version mit den unterschiedlichen >Samplerates usw. ? Da die Software nun auch bei mir läuft, kann ich >nun endlich die Software im AVR umschreiben. In den nächsten Tagen werde ich die WIN-Software mit dem neuen bidirektionalen-Protokoll erstellen. Ich habe jetzt Deine Wünsche nocheinmal zusammengefasst. Und hoffe, dass ich nichts übersehen habe? 0 Messung starten 1 ADC Teiler auf 2 setzen 2 ADC Teiler auf 4 setzen 3 ADC Teiler auf 8 setzen 4 ADC Teiler auf 16 setzen 5 ADC Teiler auf 32 setzen 6 ADC Teiler auf 64 setzen 7 ADC Teiler auf 128 setzen 8 ADC Teiler auf 256 setzen 9 ADC Teiler auf 512 setzen 10 Eingangsteiler 1:1 11 Eingangsteiler 10:1 12 Eingangsteiler 100:1 15 Eingang AC Kopplung 16 Eingang DC Kopplung 17 Eingang auf GND 20 & x Triggerwert senden (gefolgt von einem Wert im Bereich 0-255) 21 Triggerung bei steigender Flanke 22 Triggerung bei fallender Flanke 23 Triggerung aus Wenn AC Eingang aktiv ist, wird der Wertebereich automatisch auf -128...+127 gesetzt, bei DC auf 0...255
Ich habe mal einen ersten Entwurf für die Hardware angehängt. Im DC Modus öassem sich leider keine negativen Spannungen messen, aber ohne negative Hilfsspannung geht das leider nicht so einfach. Die Befehle sind so OK. Wäre es möglich (aber nur, wenn es keinen zu großen Aufwand ist), die Werte direkt in Volt (entsprechend den Teilerfaktoren) anzuzeigen und eine Kalibrierfunktion einzubauen? Dazu legt man eine Gleichspannung an, und gibt den Spannungswert ein. Das Programm merkt sich den Spannungswert und rechnet dann alle Werte in Volt um.
Hi, was spricht gegen ein 4052 als Quellwahlschalter? Duerfte besser sein als viele Relais. Die beste Loesung aber auch die teuerste wird wohl der DG409 sein. Gruß, Dirk
CMOS Schalter waren auch mein erster Gedanke, aber: Legt man 100V an, und nimmt den 100:1 Teiler hat man 1V also alles OK. Am 1:1 Teiler liegen dann aber 100V an. Das gibt ein nettes Feuerwerk...
Hi, in den billigeren DSO's die fuer max 20V ausgelegt sind wird die Funktion genutzt. Kurzzeitig sollten das die Schutzdioden aushalten und der AVR koennte einen groessen Spgteiler waehlen bei Overflow. Eine andere Moeglichkeit waere es per Autorange die Spannungsteilung festzulegen. Gruß, Dirk
Die Schutzdioden halten das nicht aus, wenn man keine Widerstände davorbaut. Außerdem fließt ein Strom durch den 10:1 Teiler und verfälscht die 100:1 Ergebnis.
@Benedikt >Ich habe mal einen ersten Entwurf für die Hardware angehängt Gefällt mir, beonders die Relais-Variante. Einfach und gut. Und vorallem robust. Selbst bei einer Eingangsspannung von 100V und Vorteiler 1:1 lässt diese Eingangsspannung maximal R2 und R5 das zeitliche segnen. Der Verlust dieser beiden R ist vertretbar. Hab' nochmal nachgerechnet, die Grenzfrequenz des Tiefpasses R1+R2+R5 + C2 =21k/100pF liegt momentan bei 76 kHz, wird beim einem 10kHz Rechteck-Eingangssignal etwas eng, besser wäre C2=56pF. Erhöhe bitte C1 auf 1µF, sonnst haben niedrige Frequenzen (bei 1:1) keine Chance und ein Rechteck bei 100Hz sieht etwas merkwürdig aus. Was meinst Du Benedikt? Sollte der Spannungsteiler auch Frequenz-gang-kompensiert werden? >Wäre es möglich die Werte direkt in Volt (entsprechend den Teilerfaktoren) anzuzeigen und eine Kalibrierfunktion einzubauen? Sehr gute Idee. Man bräuchte die empfangenen Werte nur mit einem Faktor zu multiplizieren. Z.B. bei 1:1, empfangener Wert=100 Ergebnis= 1 Volt.
Vergesst die Schaltung, sie ist falsch: Das DC Offset von halber Spannung wird auch durch den Teiler mitgeteilt. Die geänderte Version hat den Masseanschluss für das Messsignal bei halber Betriebsspannung. Eventuell sollte man daher die RS232 Leitung üver Optokoppler trennen. >Gefällt mir, beonders die Relais-Variante. >Einfach und gut. Und vorallem robust. Allerdings hat man hier die Gefahr, dass aufgrund des geringe Stroms die Kontakte oxidieren. Mit Reed Relais sollte es aber gehen. >Hab' nochmal nachgerechnet, die Grenzfrequenz des Tiefpasses >R1+R2+R5 + C2 =21k/100pF liegt momentan bei 76 kHz, >wird beim einem 10kHz Rechteck-Eingangssignal etwas eng, >besser wäre C2=56pF. Besser wäre eine Frequenzkompensation des Spannungsteilers, aber das muss ich einfach mal ausprobieren. Ich probiere lieber, als zu rechnen, die ganzen Werte habe ich so nach Gefühl ausgewählt. >Erhöhe bitte C1 auf 1µF, sonnst haben niedrige Frequenzen (bei 1:1) >keine Chance und ein Rechteck bei 100Hz sieht etwas merkwürdig aus. Warum ? Der Eingangswiderstand liegt immer bei 1M, dass sollte ausreichen. Der 10k Widerrtand beeinflusst das Signal nicht.
Kann man nicht statt Relais MOSFET einbauen?
kann man, statt die Eingänge unzuschalten, nicht für jeden Messbereich einen ADC Eingang nehmen? gefällt mir sehr gut, die Idee...
Das Problem ist einfach, dass wenn man für jeden Messbereich einen eigenen Eingang nimmt, bei einer 100V Messung der 1:1 Bereich eben 100V abbekommt. Bei MOSFETs hat man interne Dioden. Wenn man diese einsetzt, dann muss man zwei antiparallel in Reihe geschaltete verwenden, oder gleich ein MOSFET Optokoppler.
@Benedikt > Erhöhe bitte C1 auf 1µF... > Warum ? Der Eingangswiderstand liegt immer bei 1M Stimmt! Hatte ich total übersehen. War gestern (heute Morgen) doch etwas spät/früh. Sorry > Mit Reed Relais sollte es aber gehen Denke ich auch, sie sind platzsparend und so teuer sid sie auch nicht > Die geänderte Version .... Stellst Du sie uns bitte noch zur Verfügung ;)
@Benedikt können wir Dein Protokoll noch ändern? Mein Vorschlag: 0 Messung starten 1 Messung stoppen 2 µC RESET 10 ADC Teiler auf 2 setzen 11 ADC Teiler auf 4 setzen 12 ADC Teiler auf 8 setzen 13 ADC Teiler auf 16 setzen 14 ADC Teiler auf 32 setzen 15 ADC Teiler auf 64 setzen 16 ADC Teiler auf 128 setzen 17 ADC Teiler auf 256 setzen 18 ADC Teiler auf 512 setzen 20 Eingangsteiler 1:1 21 Eingangsteiler 10:1 22 Eingangsteiler 100:1 30 Eingang AC Kopplung 31 Eingang DC Kopplung 32 Eingang auf GND 40 & x Triggerwert senden (gefolgt von einem Wert im Bereich 0-255) 41 Triggerung bei steigender Flanke 42 Triggerung bei fallender Flanke 43 Triggerung aus Wenn AC Eingang aktiv ist, wird der Wertebereich automatisch auf -128...+127 gesetzt, bei DC auf 0...255
Die Änderungen sind OK. Befehl 1 wollte ich auch gerade noch einfügen, wobei Messung nicht gerade das richtige Wort ist. Damit lässt sich nur die Wartezeit auf eine Triggerung abbrechen. Sobald die Messung oder die Datenübertragung läuft, kann diese nicht mehr abgebrochen werden. Zu dem Wertebereich: In meiner neuesten Version lässt sich der Messbereich von 0 bis 255 auf -128 bis +127 per Relais umschalten. Also wäre noch ein weiterer Befehl hilfreich, um zwischen den beiden umzuschalten. Sagen wir mal 35 Messbereich 0-255 36 Messbereich -128-+127 Im AC Modus soll fest der Bereich -128-+127 verwendet werden, im DC Modus kann man auswählen. Die nächste Schalplan Version werde ich in ein paar Tagen hochladen, wenn ich den ausprobiert habe. Es macht nämlich wenig Sinn andauernd neue Versionen zu posten, die alle irgendwelche Fehler haben.
@Benedikt ich schwitze auch gerade über der Windows-Software, schon das visuelle gestalten ist schon eine Herausforderung. > Die geänderte Version hat den Masseanschluss für das Messsignal bei > halber Betriebsspannung. Eventuell sollte man daher die RS232 > Leitung über Optokoppler trennen. > Die nächste Schalplan Version werde ich in ein paar Tagen hochladen, Versuche bitte die Schaltung so zu entwickeln (gut vormuliert, gel?), dass das Masse-Potential nicht auf der halben Betriebsspannung liegt, denn in der Praxis ist das dann sehr schwer zu realisieren. Ich z.B. hätte schon große Probleme den µC zu programmieren, da bei mir faßt alles (PC, Oszi, HF-Generator, Netzteil) geerdet ist. Man müsste zwar ein zusätzliches Relais mit verwenden (für AC/DC), ich denke, das ist vertretbar. Nach meiner Meinung wird sehr selten DC im negativen Bereich gemessen, notfalls kann man auch auf AC-umschalten. Was hältst Du davon?
Die Masse der uC Schaltung bleibt auf Masse. Im AC Modus muss ich nur irgendwie die Ruhespannung auf halbe Refernzspannung bringen. Dazu schalte ich die Masse des Messeingangs auf halbe Refernzspannung. Alternativ kann man das auch mit einem Opamp machen, aber dann benötigt man eine negative Hilfsspannung usw. Da nehm ich dann doch lieber gleich zwei Optokoppler und trenne meine komplette Schaltung vom Rest, da kann ich dann wenigstens auch andere Spannungen messen, die ein offset gegenüber Masse haben. Ich mache noch eine andere Version, die eine negative Hilfsspannung benötigt. Dafür gibt es dann aber auch eine per Software einstellbare DC Offset Verschiebung von etwa +/-Messbereichsendwert.
Bei mir funktioniert weder die exe noch das vb. Bekomme bei der exe nur die Fehlermeldung "MSCHRT.OCX missing". Dito bei der vb. Habe DevStudio 6 Prof und da heißt das Element "MSCHRT20.OCX", scheinbar sind darin einige Funktionen geändert worden, man kann es nicht einfach so einbinden. Hat das ggf. schon jemand überarbeitet, bevor ich ans große basteln gehen muß?
@Fabian
> Bekomme bei der exe nur die Fehlermeldung "MSCHRT.OCX missing".
Ich kenn das Problem. Ich denke, durch eine Komplett-Installation
(UPDATE DISK1...3), da sind alle Bibliotheken enthalten, müsste dieses
Programm auch lauffähig sein.
Probiers bitte aus?
@Benedikt Respekt! Das ist eine professionelle Schaltung von Dir. Habe mir auch mal ein paar Gedanken zum AC/DC-Problem gemacht, damit die Schaltung einfach bleibt, fiel mir dieses Prinzip ein... Was meinst Du, käme mir auch sehr entgegen, wenn wir eine einfache Lösung präsentieren? Und jeder kann, entsprechend "Baukastenprinzip", dieses Projekt bist zur "totalen Perfektion" ausbauen?
juhu ich brauch nichmal was trixen um testhardware für meine openbench zu bekommen ;) wie vielleicht bekannt will ich ja was für den logic analyzer machen und die soft soll auch gleich als scope fungieren können... also wie wärs mit einer kooperation ;) ich hab derzeit "nur" eine linuxbox... windows-box steht im eck und wartet auf einen 2. tft G ich würde das ganze gerne in c++ machen.. bin aber auch bereit eine andere sprache zu vergewaltigen (nur bitte kein java boder basic)... meine "ideen" sind im wiki nachzulesen.. jetzt speziell zum scope ;) 1. wärs schön wenn jemand beim coden zur hand gehen könnte... aber ich will den grundcode nochmal überarbeiten weil ich da ganz grob noch was drehen will.... das mit den plugins wie ichs derzeit aufgezogen habe ist einfach viel zu abstrakt => viel code => kein schwein kennt sich mehr aus ;) wie gesagt.. derzeit c++ und wxWidgets... das wär schön ;) zur hardware... falls mal bei analog die lustigen arm dinger verfügbar sein sollten... 1msps und 8k ram... das wär doch wirklich was ;) 73
@alle Mein erster Entwurf der neuen Bi-Direktionalen-Windows-Software ist nun endlich fertig. Für Kritiken, Hinweise oder Anregungen bin ich sehr dankbar. @Benedikt In dem Eigabefeld "TEST" kannst Du "per Hand" Kommandos an den µC senden, ich denke, es wird Dir für den Anfang sehr nützlich sein. Oben links sieht man, Frau natürlich auch ;) welches Zeichen zuletzt an den µC gesendet wurde. Ein paar Kommandos fielen mir beim programmieren noch ein/auf: 33 Eingang nicht auf Ground 44 Triggerung EIN Versuche bitte den µC so zu programmieren, dass beim Start der Windows-Software und Reset des µC gleiche Schaltzustände anliegen.(z.B. der Vorteiler) Bevor ich's vergesse, ich habe die Taktfrequenz des µC mal mit sichtbar gemacht, man kann wählen, wenn man diese Frequenz ändert, ob der ADC-Vorteiler angegeben werden soll, oder die Zeit pro 100 Messungen (ms/Teilung), somit wäre auch die X-Ausrichtung geeicht.
@Bernhard Deine Schaltungsversion ist exakt meine vorletze Version, die ich aus mehreren Gründen verworfen habe: a) Ich möchte die interne 2,56V Referenz nehmen, um den kleinsten Messbereich empfindlicher zu machen (z.B. um ein Audiosignal zu messen) b) Wenn man DC misst und den Wertebereich auf +/- einstellt, läd sich der Elko langsam auf und man bekommt einen DC Offset Fehler. c) um diesen DC Offset Fehler gering zu machen, muss der Spannunsgteiler niederohmiger gemacht werden. Das darf bei der ADC Refrenz aber nicht sein. Respekt, die Änderungen der Software gingen jetzt aber schnell ! Ich werde jetzt erst mal die Hardware aufbauen, ehe ich alles teste.
Hier noch die andere Schaltungsvariante, die eine negative Spannung benötigt (kann man z.B. mit einem IC7660 erzeugen). Hier kann man das Eingangssignal per PWM erzeugter Spannung im Offset verschieben. Dadurch entfällt das ganze Offset-Umschalt-Problem per Relais, und man kann eben einen Offset einstellen, so wie bei einem echten Oszilloskop. @Bernhard Sendet das Programm vor jeder zu startenden Messung den "Messung starten Befehl ?" Irgendwie wird dieser nie gesendet, zumindest startet die Erste Messung bei mir nicht.
@Benedikt > Deine Schaltungsversion ist exakt meine vorletze Version, die ich > aus mehreren Gründen verworfen habe: Stimmt, ich glaube hier hatten wir den gleichen Grundgedanken, nur dass ich bei meinem Prinzip ohne das Wechsel-Kontakt-Relais auskam, deshalb stellte ich Dir das leicht geänderte Prinzip zur Verfügung. > Hier noch die andere Schaltungsvariante, die eine negative > Spannung... Super! Ich denke, dieses Prinzip hat sehr viele Vorteile. (AC/DC, +/- Spannungen, Software-Offset... herrlich) Sieht unkompliziert aus und ist sehr übersichtlich. Respekt! Der ULN2803 ist sicherlich nur ein Treiber für die Read-Relais? Eigentlich könnte man ihn weglassen, da die Read-Relais ca. 500 Ohm Wicklungswiderstand aufweisen. Oder hast Du bedenken, dass der ADC-Wert verfälscht wird? Der R9=20K, erscheint mir etwas groß, momentan ist die Verstärkung für die Offset-Spannung =2, war das so gewollt von Dir? Das soll jetzt kein Nörgeln sein, könntest Du bei Deinen Schaltungen an wichtigen Punkten z.B. "Referenz-Ausgang" ICB5 die Spannungswerte mit angeben, die Schaltungen lassen sich dann einfacher nachvollziehen, ohne dass man gedanklich die wichtigen Spannungen immer berechnen muss?
@Benedikt > die Änderungen der Software gingen jetzt aber schnell ! ...hat mich zwei sehr! lange Abende gekostet.... >Sendet das Programm vor jeder zu startenden Messung den "Messung >starten Befehl ?" Irgendwie wird dieser nie gesendet, zumindest >startet die Erste Messung bei mir nicht. Wird momentan noch nicht gesendet. A: Soll er nur 1x gesendet werden, wenn man den Button "Start" betätigt? B: Soll er ständig gesendet werden, wenn der komplette 800-Daten-Messzyklus empfangen wurde? Ich denke, Variante A ist günstiger, denn sollte dieser Start-Befehl mal "untergehen" (z.B. Übertragungsfehler) dann bleibt das ganze System stehen und muss mühsam durch zwei Mouse-Klicks wieder zum Leben erweckt werden.
Ich dachte an Variante B, denn so kann leichter Single-Shot usw. implementiert werden, und man wäre insgesamt flexibler. Das wirklich mal ein Impuls untergehen sollte (was bei mir noch nie passiert ist, ich würde sagen die Warscheinlich das sowas bei einer ordentlich aufgebauten Schaltung passiert ist viel seltener als 1:1000000), glaube ich daher eher nicht. Zur Schaltung: Die Verstärkung von 2 bei der Offset Spannung dient dazu um auch das Messsignal zu verstärken, um einen empfindlicheren Bereich zu bekommen, um auch Audiosignale messen zu können (+/-640mV). Ich denke +/-64V sollte eigentlich als maximaler Messbereich ausreichen. Man kann dann den ja immer noch mit einem 10:1 Tastkopf auf +/-640V erweitern. Als OP sollte man etwas besseres als den LM358, den verwende ich nur immer als Platzhalter für die besseren die ich dann später einsetze.
@Bendikt > Ich dachte an Variante B OK, mache ich. Ich werde es so umsetzen: Immer, wenn alle Daten (z.B. 800) empfangen wurde, dann wird automatisch der "Messung starten Befehl" gesendet. > Die Verstärkung von 2 bei der Offset Spannung dient dazu um auch das > Messsignal zu verstärken Sehr gute Lösung > den verwende ich nur immer als Platzhalter für die besseren die ich > dann später einsetze ...grins... ;)
hallo, mich würde mal der sourcode interessieren von visualbasic5.0 progge auch noch damit in verbindung mit dem avr und video-capture. mfg pebisoft
@Bernhard Ich habe jetzt meine Testhardware und die Software soweit fertig, dass es funktioniert, zumindest teilweise. Hast du die Version, bei der vor jeder Messung der Messung starten Befehl gesendet wird, soweit fertig ? Was bedeuted die Zahl links oben über dem PORT Button ? Sind das die Anzahl an empfangenen Bytes ? Hier sollte bei 1000 Werten doch immer 1006 stehen, oder ? Da im Moment der Messung starten befehl noch nicht automatisch gesendet wird, muss ich für jede Messung noch per Hand den Wert über die "an den uC senden" Funktion starten. Allerdings kommt nicht immer ein neues Bild, manchmal muss ich bis zu 10x klicken, ehe was kommt. Außerdem bleibt der Zähler links oben öfters mal irgendwo <1000 stehen, und wenn ich dann nochmal klicke springt er auf 1006 und es kommt ein Bild. In der Darstellung sieht man dann einige Spikes, die anscheinend die Startbytes der Übertragung sind. Kann es sein, dass das Programm ab und zu Daten verliert ? Wenn ich das ganze mit einem Terminalprogramm laufen lassen, kommen bei jedem Senden einer 0 exakt 1006 Bytes zurück.
@pebisoft >mal der sourcode interessieren von visualbasic5.0 Ich werde mal noch einige Änderungen vornehmen und ihn anschließend wieder hier veröffentlichen, Vielleicht genügt der momentan veröffentlichte? > und video-capture Klingt sehr interessant. Vielleicht könntest Du mal einen Beitrag zu diesem Thema veröffentlichen?
@Benedikt >Hast du die Version, bei der vor jeder Messung der Messung starten Befehl gesendet wird, soweit fertig ? Ich versuche, bis zum Wochenende eine brauchbare Version zu erstellen. >Was bedeuted die Zahl links oben über dem PORT Button ? Das ist die Datenmenge (Anzahl der Zeichen), die sich momentan noch im Eingangspuffer des PC's befindet und noch nicht ausgewertet wurde, diese Zahl sollte nach kurzer Zeit (ca. 1 Sekunde) wieder auf "0" stehen. >Zähler links oben öfters mal irgendwo <1000 stehen Ich werde das Windows-Programm auf diesen Effekt hin konrollieren. Vielleicht könntest Du mir Dein Assembler_Code mal zu mailen, "Bernhard.Erfurt@gmx.de" vielleicht finde ich den Fehler dann im Win-Prog schneller?
Hier ist das Programm, allerdings noch eine extreme Testversion. Die meisten Funktionen sind schon drin, aber noch ungetestet. Wenn man z.B. den Messung stoppen Befehl sendet, hängt sich alles auf...
@Benedikt Ich denke, dass ich den Fehler gefunden habe, dieses Windows-Programm kommt mit Baud-Raten über 56k nicht zurecht, bei mir traten auch seltsame Effekte auf. Ein paar Fehler im Win-Prog konnte ich auch noch abstellen. Sobald das Win-Prog gestartet wird, wird nun nach 1000ms das Zeichen Null gesendet um die Daten vom µC anzufordern, und die Daten vom µC kommen auch alle an, funktioniert wunderbar!
Die Software läuft schon ganz gut... Das mit den Messungen läuft einwandfrei. Allerdings funktionieren 1000 Messwerte nicht: Das Programm emfpängt zwar die Daten, zeigt diese aber nicht an. Mit 800 Werten geht es wunderbar. Ist die Triggerfunktion schon eingebaut ? Denn irgendwie geht diese noch nicht, bzw. der Triggerpegel wird falsch eingestellt. Wenn ich diesen per Hand einstelle läuft auch die Triggerung. Der "aus" Button beim Trigger sollte besser "ein" heißen. Wenn die Triggerung aktiv ist, sollte das Programm keine erneute Messung starten, wenn der letzte Wert noch nicht empfanfen wurde. Wenn man die Messung während des Wartens auf die Werte durch den ein/aus Button stoppt, sollte der Messung stoppen Befehl gesendet werden. Für das DC Offset der Eingangsspannung wird dann auch noch irgendwo ein Regler benötigt. Der Befehl zum einstellen des DC Offsets ist 50 gefolgt vom Wert
Ich habe auch ein kleines Oszi-Programm geschrieben. Beim Atmega8 mit 8Mhz konnte ich eine Abtastrate von 6.5us~160kHz erreichen. Die Aufnahme eines 10kHz Sinussignals sieht ziemlich sauber aus. Gruss, christoph
@Benedikt >Allerdings funktionieren 1000 Messwerte nicht Ich werde nach dem Fehler suchen, nur was mich sehr wundert, dass die 1000 Werte bei mir problemlos empfangen werden. Ich lass mir was einfallen. >Ist die Triggerfunktion schon eingebaut ? noch nicht, kommt aber in kürze >Der "aus" Button beim Trigger sollte besser "ein" heißen. ändere ich >Für das DC Offset der Eingangsspannung wird dann auch noch irgendwo >einRegler benötigt. Der Befehl zum einstellen des DC Offsets ist 50 >gefolgt vom Wert implementiere ich
@Schappihunter > Und aus diesem Grund habe ich die Tastenentprellung, die > Drehgeberauswertung sowie die RC5-Decoderroutine NICHT von Peter > Dannegger übernommen und ich kam auch zum gewünschten Erfolg. Dazu kann ich nur sagen: "Wer nicht fragt, bleibt dumm !" Bisher hat nämlich jeder, der zu meinen Beispielen Fragen hatte, auch Antworten dazu bekommen, man muß nur fragen wollen. Wer aber erwartet, daß einem Wissen wie gebratene Tauben in den Mund fliegt, der ist auf dem Holzweg. Auch ich habe manchmal Schwierigkeiten durch fremde Quelltexte durchzusteigen, daran ist überhaupt nichts schlimmes. Es ist eben nur ne Frage, ob man seinen eigenen Horizont erweitern will oder nicht. Und wenn Du es eben nicht willst, dann ist mir das auch egal. Ich behaupte auch nirgends, daß meine Beispiele das Optimum sind. Deshalb gucke ich mir auch andere Beispiele an und äußere mich dazu. Peter
Das ist ein weiteres Update der WIN-Software mit dem VB-Code @Benedikt Ich habe soweit alle Änderungen eingearbeitet, hoffentlich funktionieren sie? Neu ist: - oben links siehst du die Historie der gesendeten Zeichen - im Feld TEST kannst Du Dir die ersten 200 Daten Werte anschauen, wenn aus irgend welchen Gründen die 1000 Daten nicht angezeigt werden -zusätzliche Fehlerüberwachungen habe ich mit eingebaut (z.B. Datenüberlauf am COM-Port) Bernhard
Im Moment habe ich leider etwas viel zu tun, aber ich hoffe bis Ende der Woche die Software soweit fertig zu haben. Diese automatische Y Bereichswahl ist zwar nützlich, aber ich empfinde den als sehr nervig, wenn andauernt das Bild größer/kleiner wird, wenn das Messsignal nicht sauber ist (z.B. bei einem Audiosignal). Ich denke ein fester Bereich von 0-255 bzw. -128-127 wäre sinnvoller.
Hi! Ich hatte auch schon die Idee ein COM-Port-Oszi zu bauen, allerdings macht es IMHO nicht viel Sinn, im Soundkartenfrequenzbereich rumzukrebsen, da man ja dann wirklich auch gleich die Soundkarte nehmen kann, bei überbrückten Entkoppelkondensatoren sogar für DC. Dennoch ist dieses Projekt als Übung sicherlich nicht schlecht, aber eben doch nur der Nachbau von etwas, das jeder PC sowieso schon (fast) kann... ================================================================== Daher wäre mein Vorschlag, diese Schaltung aufzubohren, folgender: diesen ADC nehmen: ADS830 (bei Reichelt.de: 5.25 EUR(!), Daten: 8 Bit, 60 MHz, paralleler Ausgang) Dann dem Atmel sagen, dass er seinen Takt ausspucken soll (PORTB.0 kann das glaube ich), dann direkt damit den ADC takten (also auch mit 20 MHz) und in einer hochoptimierten Routine, ggf. ganz einfach OHNE Schleifenanweisungen, sondern plump 800 Mal hintereinander einen PORT abzufragen und in ein Array-Feld zu speichern. auch das hochzählen des arrays NICHT programmieren, sondern fest über 800 verschiedene Konstanten (0 bis 799) realisieren. Also sowas move.b PORTB,ADRESSE000 move.b PORTB,ADRESSE001 move.b PORTB,ADRESSE002 ... move.b PORTB,ADRESSE799 oder in C: wave[000]=PORTB; wave[001]=PORTB; wave[002]=PORTB; ... wave[799]=PORTB; (kann ja sein, dass einC-Compile da letztlich genauso schnellen Code erzeugt) Also wirklich 800 fast identische Code-Zeilen!!! Eben um Rechenzeit zu sparen (hat man auch beim Amiga500 gelegentlich so gemacht, der hatte auch keinen Cache, bei heutigen PCs wäre das natürlich hahnebüchener und noch dazu ausbremsender Blödsinn) Wichtig ist eben, dass man nicht mit hochzuzählenden Variablen arbeiten darf, da das hochzählen Zeit kostet (auf einem PC würde das hochzählen Zeit SPAREN, da alles im 1st-Level-Cache abläuft, aber MCUs haben sowas ja nicht, jedenfalls nicht diese ganz kleinen) Damit der C-Code richtig schnell wird, müsste der Compiler die Variavle+Index-Konstanten in absolute Adressen umwandeln, was er aber wahrschienlich tun wird. Wenn der ATMEGA in einem Takt z.B. PORTD lesen und gleichzeitig eine speicherstelle schreiben kann, hätte man 20 MHz Abtastrate (falls er dafür 2 Takte brauchen sollte eben 10 MHz) Wenn man sagt, dass einem 10 Abtastungen pro Schwingung reichen, hätte man immerhin ein Oszi bis 2 MHz für 10..15 Euro... (kommerzielle Oszis machen bei 40 Mhz Darstellung 1 Milliarde Samples/Sek., d.h. 25 Samples pro Schwingung, mit wiviel Bit weiß ich nicht) Natürlich sollte man hier dann auch gleich Vorsehen, die ADC-Referenzspannung per Software variieren zu könne, ggf. auch noch einen OP an den Eingang (den könnte man ja in seiner Verstärkung per externem DA-Converter einstellbar machen, der DA-Converter könnte auch seriell zu füttern sein, der muss ja nur gelegentlich einen neuen Wert erhalten) Das nur mal so als Idee. PC-Software sowie Controller-Firmware als GPL wäre cool, falls ich jemals neben dem Job noch Zeit haben sollte, eine PC-Oszi-Software schreiben, würde ich das in Java machen (also dann bis in 5 Jahren oder so... ;-) Ich stelle hiermit schonmal die Idee, einen ADC, wie z.B. den ADS830 + einen Mikrocontroller zu einem Teil eines Oszilloskops zu verdrahten prophylaktisch unter die GPL. :-)
>Wenn der ATMEGA in einem Takt z.B. PORTD lesen und gleichzeitig eine
speicherstelle schreiben kann
Was er aber nicht kann, da er ein uC ist der immer nur einen Befehl
gleichzeitig ausführen kann, d.h. er braucht 1 Takt zum einlesen, 2
Takte zum Speichern, kann also maximal mit 6,66MHz einlesen.
Mit etwas Zusatzhardware (extrener Adresszähler, SRAM) kann man
problemlos 40-50MHz Abtastrate erreichen.
Die Oszilloskopsoftware kann man auch damit verwenden.
PS: Deine Idee ist nicht neu, ich habe alles auch schon
druchgerechnet:
- externes SRAM, einlesen über uC: 7 Takte
- externes SRAM, einlesen über "DMA": 6 Takte
- internes SRAM, einlesen in Schleife: 6 Takte
- internes SRAM, einlesen über 1000 Befehle: 3 Takte
- externes SRAM, eigener Adresszähler: 1 Takt, max. 40-50MHz
Ich habe auch vor (sofern ich zeit haben sollte) so ein Oszilloskop zu bauen. Ich habe auch schon geeignetes SRAM-Baustein - W24129AK-12 AD-Wandlwer - TDA8703. Geeigneten Adresszähler habe ich hoch keinen, aber das dürfte kein Problem sein. Das grösste Problem hier wird wohl sein, Eingangsverstärker für 40Mhz zu bauen.
Finger weg vom TDA8703 ! Ich persönlich hasse das Teil: Ich habe schon 3-4 von den Dinger abgeschossen: Einmal den Eingang auf <0V ausgesteuert und man kann einen neuen kaufen. Außerdem rauscht das Teil bei mir ziemlich. Der ADS830 ist nicht nur billiger, sondern auch besser (so ziemlich in allen Eigenschaften, abgesehen vom Gehäuse).
Hi, www.bitscope.com zeigt wie man es richtig macht. Der AD kostet ca 20 Euro dann werden noch ein paar OPA627 benoetigt kostet ca 7 Euro pro Stueck. Rechnet mal mit knapp 50 Euro pro Kanal an Bauteilkosten ohne die 4 Layer PCB. Gruß, Dirk
>>Einmal den Eingang auf <0V ausgesteuert und man kann
einen neuen kaufen.
Hast du wohl was falsch gemacht. Ich habe noch keinen kaputt bekommen.
@Benedikt >Diese automatische Y Bereichswahl ist zwar nützlich, aber ich >empfinde den als sehr nervig, wenn andauernt das Bild größer/kleiner >wird Ich denk' mal darüber nach, ob sich das Problem so ohne weiters lösen lässt, denn dieses Diagramm kann man leider nur bedingt durch Befehle steuern. Bernhard
Ist das Projekt fertig ? Gibt es dazu eine Webseite? Und welche Schaltung etc. gibts jetzt ? Gute Idee muß ich sagen einfach und Handlich!
@dirk >Ist das Projekt fertig ? Nein, leider noch nicht, Benedikt wollte sich noch um einen überarbeiteten Assembler-Code kümmern, aber vom Grundsatz her funktioniert es. >Und welche Schaltung etc. gibts jetzt ? Die letzten Updates sind die aktuellsten.
Hier die neueste Version. DC Offset ist integriert und funktioniert wunderbar: Man kann das Signal wie bei einem echten Oszilloskop verschieben, die Eingangsteiler funktionieren auch. @Bernhard Funktionieren 115200Baud eigentlich jetzt problemlos, oder hat die Warnung die beim Einstellen der Baudrate kommt noch eine bedeutung ? Wenn man den Trigger einschaltet werden keine Messung starten Befehle mehr gesendet. Könntest du die Software so abändern, dass nach Aktivieren der Triggerung ein Messung Starten Befehl gesendet wird, und gewartet wird bis die Werte kommen, ehe der nächste Messung starten Befehl gesendet wird ?
Hallo Ihr da draußen. wir haben 1979 ein 50 MHz Oszilloskop am Apple II betrieben. Sicher war die Auflösung nicht das was man heute verlangt aber der Apple lief mit nicht ganz einem MHz als Taktfrequenz !! Und natürlich war das Eingangssignal gesampelt ! Mich wundert, daß es heute mit den 100 fach schnelleren CPUs Probleme gibt. Oder sollte es daran liegen, daß alle wie das Kaninchen auf die Schlange auf Windows starren. Dies ist doch ein Büroprogramm zum Verwalten und Bürokratisieren.... wenn ich mich richtig erinnere waren die noch niemals die Schnellsten. Weiterhin viel Erfolg wünsche ich allen die sich in ein Problem hineinwühlen können, der Erfolg eines selbstgeschriebenen Programms ist zwar nicht immer ein finanzieller, aber er hebt das Selbstbewustein gegen über allen die mit Fragen wie "zu was braucht man so etwas", " das gibts schon lange" und sonstigen Unwissenheit kaschierenden Gegeargumenten den Wind aus den Segeln nehmen wollen. Tinkerbox
@Peter: Wenn du was besseres hast her damit.
@Benedikt Danke, dass Du das Assembler-Programm fertig hast, in den nächsten Tagen werde ich mich etwas intensiver damit beschäftigen. >Funktionieren 115200Baud eigentlich jetzt problemlos, oder hat die >Warnung die beim Einstellen der Baudrate kommt noch eine bedeutung ? Ja die Warnung ist berechtigt, da manche Betriebsssteme mit dieser 115200 Baudrate nicht zurecht kommen. >Könntest du die Software so abändern, dass nach Aktivieren der >Triggerung ein Messung Starten Befehl gesendet wird, und gewartet >wird bis die Werte kommen, ehe der nächste Messung starten Befehl >gesendet wird ? das müsste gehen, ändere ich ab Du Benedikt, könntest Du uns bitte den Schaltplan für diese Variante noch zur Verfügung stellen, damit alle den gleichen Wissensstand haben und der Nachbau problemloser erfolgen kann? Noch eine Frage, gab es noch Probleme mit der Übertragung von 1000 Datenpunkten? Gruß Bernhard
115200Baud sind echt ein Problem ? Wo gibt es denn genau Probleme ? Bei mir lief es problemlos. Die 1000 Werte habe ich noch nicht getestet. An der Hardware hat sich nichts geändert, ich benutze diese hier: http://www.mikrocontroller.net/attachment.php/233074/oszi3.gif Demnächst ist ja bei der Elektor Ausgabe ein kleiner 16bit uC dabei, der kaum mehr kostet als ein AVR, aber mehr Speicher und einen 300kHz ADC hat. Dann werde ich mit diesem mal einen zu der AVR Schaltung kompatible Schaltung bauen, denn beim AVR ist recht schnell die Grenze der Samplerate erreicht. Könntest du mir mal den aktuellen Source Code zur Verfügung stellen ? Ich habe einen 40MS/s Logik Analyser den ich auch als Oszi nutze, nur hat der ein etwas anderes Protokoll und ich habe bisher keine passende Windows Software dafür...
Das 50 MHz Oszilloskop liegt bei mir noch herum, jedoch vermute ich ist die Hardware über den Jordan (-:( Die Diskette mit dem Programm und Beschreibung habe ich noch. Aber ich habe einmal einen Oszillograf in der MC publiziert so 1980 81 der ein wirklicher Graf war er hat nämlich die Kurven ausgedruckt. Belegexemplare liegen irgendwo im Speicher wenn wirkliches Interesse besteht suche ich sie raus. Die A/D Wandlung wurde per Programm gemacht, maximale Sampling Rate war 7,5 kHz. Viel Erfolg
Klar , vielleicht gibts, verbesserung die man mit einbauen , kann.
Hallo zusammen, ist schon mal jemand über die folgende Seite gestolpert? Ist ein vergleichbares Projekt und könnte vielleicht hilfreich sein. http://elm-chan.org/works/wcs/report_e.html Gruß Thomas
@Bernhard Schulz Könntest du mir mal den aktuellen Source Code des Programms zur Verfügung stellen ? Es hat noch einige Fehler (z.B. irgendein Overflow tritt öfters ein), und ich würde daher gerne die Software noch ein wenig an meine Bedürfnisse (andere AD Wandler) anpassen.
Hallo Benedikt >Könntest du mir mal den aktuellen Source Code des Programms zur >Verfügung stellen ? Ich habe Dir den VB-CODE angehängt und hoffe, dass ich Dir damit weiter helfen kann, hoffentlich findest Du den Fehler. Gruß Bernhard
Schöne Idee, interessante Geschichte geworden. Wie wärs mit LCD ??? Was machen die Ideen mit den schnelleren Wandlern und ext. RAM ?? Macht weiter so !!! Gruß High Low Stephan
@stephan >Wie wärs mit LCD ??? Das LCD liegt schon seit vielen Wochen bei mir und wartet darauf, etwas anzeigen zu dürfen. Werde aber bei passender Gelegenheit den Assemlercode aud ein LCD umschreiben. >Was machen die Ideen mit den schnelleren Wandlern und ext. RAM ?? Ich versuche diese tollen Ideen mit umzusetzen. Gruß Bernhard
ich habe gar keine mschart.ocx Komponente. Schade. Das wird daran liegen, dass ich auch kein VB5 o. 6 drauf habe. Wollte ich mir trotzdem mal ansehen. Kann mal einer die ocx hochladen? Danke AxelR.
@AXEL
>Kann mal einer die ocx hochladen?
Ich habe in diesem Beitrag die Installations_Disketten mit zu Verfügung
gestellt, damit müsste es eigentlich funktionieren?
Bernhard
> Kann mal einer die ocx hochladen?
Ist nicht zulässig (copyright).
Hurraa! Ich hab das Oszilloskop am laufen !!! In VB6 auf XP. Allerdings noch mit dem Sinus (Startdaten) auf dem Bildschirm. Weil die MSChart bei mir auch Probleme machte, habe ich die Kurven-Darstellung auf die (wohl etwas moderne) MSCRT20 angepasst. Jetzt muss ich mich nur noch um die Hardware kümmern. @Bernhard: Klasse Projekt. Hast Du SUPER gemacht. Bedanke mich vielmals! Gruß, Vierpol
@Vierpol: Mach doch mal den Source hier ins Forum rein! Ilja
DIGITAL- Oszilloskop MSCHART.OCX ERROR OCX NOT REGISTRED
to Register the Control type: regsvr32.exe MSCHART.OCX
@Bernhard Schulz gutes Projekt, Respekt! Könnte man so etwas nicht als Logikanalyser bauen: schneller AVR mit SRAM und dann über PC auswerten?
@TOSCI >Könnte man so etwas nicht als Logikanalyser bauen: >schneller AVR mit SRAM und dann über PC auswerten? Als Logikanalyser? Gute Idee. Ich denke man käme sogar ohne eine ADC-Wandlung aus. Einfach die PINS abfragen (per Interrupt?) und die Daten in den SRAM übertragen und anschließend auswerten. Bernhard
@Bernhard ja genau, könnte man auch mit 16Bit und 2 schnellen S-RAM Bausteinen bestimmt easy machen. Ev. einen Arm oder PIC nehmen, die sind z.T. noch schneller??? Klingt so einfach..... warum gibt es dann nicht.? Aber dein Oszi ist auch relativ einfach, und den gab es vorher auch nicht :-) Gruß Tosci
>Ev. einen Arm oder PIC nehmen, die sind z.T. noch schneller??? PICs sind langsamer, da diese mit 1/4 vom Takt laufen. Arm könnte schneller sein, aber das ist etwas Oversized. Wie schnell soll das ganze sein ? Wenn jemand eine passende Windows Software schreibt, machte ich gerne den uC Teil.
@Bendikt >Wenn jemand eine passende Windows Software schreibt, machte ich gerne >den uC Teil. Die Win Software existiert doch schon, was würdest Du daran ändern wollen? Gruß Bernhard
hmm... was haltet ihr von einer portierung auf ein nicht M$ Betriebsystem? wenn du UML/Struktogramm/Programm-Ablauf-Plan deiner igitigit VB-Sourcen machst würde ich es in angriff nehmen!
Warum nicht einfach ein externes SRAM, das von einem CPLD gefüllt wird und vom AVR an den PC geschickt? Sollte kein Problem sein wenn man es einfach hält.
@Lupin für mich wäre das ein Problem, gerade der einfache Aufbau mit überschaubarem Aufwand macht das Teil so interessant. Eine CPLD Anwendung gibt es schon (E****tor oder andere) Nur ich kann sie nicht programmieren, bzw. verstehe den Code auch nicht. Da hat die AVR-Anwendung mehr Vorteile: Preis und einfach aufbaubar.
@Bernhard Es ging um den Logik Analyser AVR, CPLD, FPGA Dazwischen liegen Welten, sowohl im Preis als auch Aufwand, als auch Geschwindigkeit. Wenn ich mir das recht überlege: Ein Logik Analyser mit <1MHz ist eigentlich zu nichts zu gebrauchen. Meistens verwende ich irgendwas im Bereich 5-20MS. Mit 1000Bytes Speicher wie beim Oszilloskop wird das auch nix, die reichen gerade mal für einige Bytes aus einem SPI Transfer. 32kB sollten es mindestens sein. Außerdem benötigt ein Logik Analyser eine ordentliche Triggerung. Wenn man das diskret aufbaut, wird das eine ziemlich große Platine voller HCMOS ICs und kritischem Timing. Alternative: ein CPLD, und max. 2 HCMOS IC + SRAM und AVR.
@AVRNIX
>Gibt es schon was neues zum Projekt
Momentan noch nicht, ich plane, dieses Projekt auf ein Matrix-Display
anzupassen.
Bernhard
Versuche mich auch an einem Scope. Anbei mal ein kleines Video(sorry, schlechte Qualität). Es zeigt ein Rechteck-Signal von 976Hz. Da ich noch auf Fifo`s und schnellen A/D warte, muß erstmal ein TLC0820 herhalten. Trigger ist noch nicht. Mfg Sascha
Hi Sascha, in welcher Sprache programmierst Du? Ich habe in Delphi eine Bitmap erzeugt, welches aber nur im Speicher steht. Dort schreibe ich meine Messwerte hinein. Wenn die Kurvenform auf dem Schirm passt, schreibe ich das komplette Bitmap via Bitblt in mein Fenster. dann flimmert es nicht und man hat ein stehendes Bild. Gruß AxelR.
Hi, in C. Momentan Sample ich 180 Werte in einen Buffer. Diese werden dann angezeigt. Da der Mega32 durch das Messen im Timer-Interrupt sehr stark belastet wird, flimmert es leider. Deswegen warte ich auf die Fifos für den A/D. Mfg Sascha
Hallo! ich hab ne frage zu dem oszi. ich bin noch recht neu bei der ganzen sache mit den microcontrollern. ich hab vor mir ne schaltung zu bauen mit nem mega8 und LCD auf dem ich dann messungen vom auto abfragen kann. nun zum oszi. kann ich mit diesem oszi z.b. den drehzahlsensor anzeigen. oder z.b. den radsensor vom ABS für die geschwindigkeit. das sind alles nur einfache induktivesensoren soweit ich weiß. ich kann mit kein richtiges oszi leisten. da wäre eure nette sache doch sehr toll ;) mfg andy und weiter so!
@Andy H >nun zum oszi. kann ich mit diesem oszi z.b. den drehzahlsensor >anzeigen Dieses einfache Oszilloskop kann Dir Frequenzen bis ca. 10 kHz hinreichend genau (feine Auflösung) anzeigen, mehr schafft der Atmega8 bei 16 MHz nicht. >kann ich mit diesem oszi z.b. den drehzahlsensor anzeigen. bei 10.000 Impulsen bzw. Umdrehungen pro Minute (166 Hz) würde er es problemlos schaffen. Bernhard
oh das ist ja super wenn das klappt. hab da noch paar fragen zu dem schaltplan. diese relais? welche nimmt man da? vielleicht welche die es bei reichelt gibt. und dann hab ich noch einen pfeil reingemalt. das ist doch sicher der messanschluss, oder? macht man da so eine BNC-buchse dran? und dann noch diese minus 5 Volt. wo bekomm ich die denn her? ich brauch das ja eigentlich nicht beim auto, oder? danke schon mal ;)
@ Andy >diese relais? welche nimmt man da? vielleicht welche die es bei >reichelt gibt. genua, Read-Relais reichen aus >und dann hab ich noch einen pfeil reingemalt. das ist doch sicher der >messanschluss, oder? macht man da so eine BNC-buchse dran? muss nicht sein, normale Buchsen reichen, ist ja kein HF-Signal >und dann noch diese minus 5 Volt. wo bekomm ich die denn her? ich >brauch das ja eigentlich nicht beim auto, oder? Aber zum betreiben dieser OPVs Noch was, wenn Du diese Schaltung nur für positive Spannungen ensetzen möchtest, dann kann man aus Kostengründen ;) alle Relais und OPVs weglassen. Ein Schaltplan hierzu müsste schon hier vorhanden sein. Bernhard
Hi! Nur mal als Anregung gedacht: Wie wäre es wenn ihr ein Input Plugin für Osqoop schreibt ? Osqoop ist eine in QT4 geschriebene Oszi Software (linux+win): http://lsn.unige.ch/osqoop/ Ich hab letztens für einen selbstgebastelten ADC der an nem fpga hängt ein input Plugin für Osqoop geschrieben. Das war in unter einer Stunde erledigt, das howto für input Plugins ist recht brauchbar :) Wobei ich mir die Software von Bernhard nicht angeguckt habe, evtl bietet sie ja schon ähnliches ;) (hab nur Linux Rechner) Bye, Simon
hallo bernhard kannst du vielleicht mal über die liste gucken. bin mir mit den teilen immer noch nich sicher. vorallem wegen den relais. kannst du mir da vielleicht ma ne nummer geben welche da gehen, von reichelt vielleicht? das wär sehr nett. hast du vielleicht ein layout deiner platine? mit den minus 5 Volt das kapier ich auch nich :( sorry danke fürs verständnis
@Andy >kannst du mir da vielleicht ma ne nummer geben welche da gehen, 5V Reed-Relais: DIP 7212-L 5V >hast du vielleicht ein layout deiner platine? nein, leider nicht >mit den minus 5 Volt das kapier ich auch nich ist nötig zum messen von negativen Spannungen, sollen nur positive Spannungen gemessen werden, kann die Schaltung stark vereinfacht werden (Kostenreduzierung) Bernhard
@Bernhard wie siehst mit dein Oszi mit Display aus ?
Hallo AVRNIX,
>wie siehst mit dein Oszi mit Display aus ?
Gerade in Arbeit!
Habe hier eine 128x64 Display mit KS0108 Controller vor mir liegen.
ES beherrscht schon
-Kreise, Halbkreise, Rechtecke und Linien
-Digitaloszilloskop
Momentan schwitze ich nur noch an den ASCII-Zeichensatz, da ich mit
Hand noch jeds Zeichen vereinbaren muss.
Bitte noch etwas Geduld, werd's bald veröffentlichen.
Bernhard
@Berhard klar ich kann warten ;) Ich hätte da mal ne frage: wenn der AVR ca 15Ksps hat - wie machst du die Dimisonierung von t und V auf dem Display, sodas man die Daten auf den Display ablesen kannst? Weil es braucht ja eine gewisse Zeit der Wandlung und wie Rechnet man das um auf der Zeitachse bzw in Werten ( wegen der Abtastung )? (min. fabtast=f*2) Ich hoffe ich habe das Verständlich gesagt :|
@AVRNIX >wenn der AVR ca 15Ksps hat - wie machst du die Dimisonierung von t >und V auf dem Display, sodas man die Daten auf den Display ablesen >kannst? Man könnte in Deinem Beispiel nach 150 ADC-Wandlungen eine X-Hilfslinie Zeichnen und schön hätte man die Zeitachse kalibriert. Bei der Y-Achse könnte man ebenso (als Bsp: alle 50 mV) eine Hilfslinie zeichnen bzw. andeuten. Bernhard
@Berhard: Es kam doch nicht soklar rüber wie ich dachte. Vielleicht so : 1 Messung dauert sagen wir mal 10µS ja das heisst 1280µS würde eine Komplette Messreihe geben. So wie messe ich jetzt bzw stelle ich dar wenn das Signal 10ms dauert oder wenn ich es am Gerät so einstelle? Aber wenn ich 10ms eingestellt habe, kann ich durch die Erhöhung der Abtastung da genauer Messen. Aber wie messe / Berechne ich 10µs 1ms 10ms 1 s etc. Die Abstatunggeschwindigkeit bald ja gleich, die Abtastung je länger das Signal ist erhöht sich ( dadurch wird auch die Genauigkeit besser). Aber wie Berechne ich jetzt die Darstellungparameter? Das Signal kann ja mal den ganzen Bildschirm füllen oder nur ein Teil wie beim Oszi. Wie wird das real gemacht da komme ich auf keinen nenner. Da ja auch durch die Messung und Speichern schon Zeit verloren geht. Wie hast du das jetzt bzw wirst es machen ?
@AVRNIX >1 Messung dauert sagen wir mal 10µS ja das heisst 1280µS würde eine >Komplette Messreihe geben. Wir bleiben mal bei diesem Beispiel, das sind brauchbare Zahlen. 1 mal Messen=10µs mal 128 Messung ergeben 1280µs für 128 Messungen Diese Meswerte könnte man sofort auf einem Display darstellen. Würde als Eingangssignal eine Frequenz von 781 Hz (1/1280µs) anliegen, dann würdest Du eine wunderschöne Sinusfunktion betrachten können. Wäre aber Dein Eingangssignal nur 781/2 Hz, dann würdest Du als Bsp. nur die positive Halbwelle bewundern können. In diesem Fall könnte man, die Messzeit auf das Doppelte verlängern oder pro Messpunkt 2 mal messen, um wieder den kompletten Sinus zu sehen. Wärend einer Messung verbleibt noch genügend Zeit, um den Messwert der vorhergehenden Messung in den SRAM abzulegen (ca. 10 Takte=> bei 16MHz ==> ca. 1µs) Bernhard
Interessantes Projekt auf jeden fall. Ich würde sowas gerne mit einem 240x128 Display betreiben. Ich werde erst mal warten, bis du die 128x64 routinen fertig hast und sie dann wohl auf mein 240x128 umschreiben.
@Hauke >Ich werde erst mal warten, bis du die 128x64 >routinen fertig hast und sie dann wohl auf mein 240x128 umschreiben ...grins... Dürfte Dir nicht sonderlich schwer fallen, da ich alles schon dafür vorbereitet habe ;) Bernhard
Ich kann dir auch gerne helfen die aktuellen Probleme zu lösen :) melde dich einfach mal
eine frage hätte ich... funktioniert das Teil nur mit Spannungen bis 5V oder auch drüber? Super Projekt! Respekt würde ich nicht hinbekommen!
@Fabian >eine frage hätte ich... funktioniert das Teil nur mit Spannungen bis >5V oder auch drüber? Funktioniert natürlich auch bei Eingangsspannungen über 5V, ist nur anhängig vom Eingangs-Spannungs-Teiler. Bernhard
Wollt Ihr nicht mal ein Wicki für das Projekt aufmachen, mit aktuellem Schaltplan und Sourcen? oder könnt ihr nicht mal die aktuellen soursen und den aktuellen schaltplan posten?
@CDC >Wollt Ihr nicht mal ein Wicki für das Projekt aufmachen, mit >aktuellem Schaltplan und Sourcen? könnte man tun, ist leider nur eine Zeitfrage >oder könnt ihr nicht mal die aktuellen soursen >und den aktuellen schaltplan posten? Diese sind alle in diesem Thread abgelegt Bernhard
Hallo, respect super Projekt. Wenn ich das Teil nachbaue, was für eine Betriebsspannung lege ich dann an die OPs an? +/- 5V oder nur 5V und Gnd?
@Christian >was für eine Betriebsspannung lege ich dann >an die OPs an? +/- 5V oder nur 5V und Gnd? +/- 10 V wäre besser, damit die OPVs besser durchsteuern können
Danke für die schnelle Antwort. wenn ich den OP nun mit +/- 10V (oder +/- 5V) versorge, kann ich doch nicht garantieren, das der AIn-Port am AVR zuviel bzw. negative Spannung abbekommt oder? währe es dann nicht besser die Dioden direkt vor dem AVR zu platzieren? oder ich versorge den OP nur mit 6V und Gnd, somit kommt am AVR nur eine Spg. zwischen 0 und ca. 5V oder? Ich hoffe ich habe keinen Denkfehler!
@Christian >wenn ich den OP nun mit +/- 10V (oder +/- 5V) versorge, kann ich doch >nicht garantieren, das der AIn-Port am AVR zuviel bzw. negative >Spannung abbekommt oder? Da hast Du natürlich Recht. Ein kleiner Trick wird angewendet damit das nicht passiert, man nutzt die internen Schutzdioden des µC. Ein Vorwiderstand (10k) sorgt dafür, dass der Eingangs-Strom nicht zu hoch wird. >währe es dann nicht besser die Dioden direkt vor dem AVR zu >platzieren? könnte man zusätzlich tun, muss aber nicht sein >oder ich versorge den OP nur mit 6V und Gnd, somit kommt am AVR nur >eine Spg. zwischen 0 und ca. 5V oder? Ja, aber es kann passieren, dass der OPV, wenn er seinen Ausgang auf GND legen muss, dann nicht mehr exakt arbeitet. Bernhard
Hi ich habe bemerkt, dass das hier erwähnte Programm nur eine selbst konfigurierte Schwingung darstellt doch ich suche nach einem Programm das mir einen Ton den ich als Sounddatei habe in Form eines Oszilloskopbildes wiedergibt. Also... Kann mir jemand sagen ob es ein digitales Oszilloskop gibt bei dem ich eine beliebige Tonspur die ich in das Programm des Oszillographen einlesen lasse dargestellt bekomme? Wer eine Antwort kennt kann mir bitte per E-Mail antworten c-kerst@web.de Bin für jede Hilfe dankbar.
>ich habe bemerkt, dass das hier erwähnte Programm nur eine selbst >konfigurierte Schwingung darstellt ... da warst Du im Simulations-Modus ;) >doch ich suche nach einem Programm >das mir einen Ton den ich als Sounddatei habe in Form eines >Oszilloskopbildes wiedergibt. Ich nehme an, dass Du den analogen-NF-Pegel darstellen möchtest, dann kannstDu problemlos diese Soft und Hardware nutzen.
Zum Anzeigen von Soundpegeln von .wav, .ogg und .mp3-Dateien nehme ich audacity von http://audacity.sourceforge.net/
@Bernhard (Gast)
interessantes Projekt, Software lief dank Update auch sofort.
@Axel Rühl
>arbeite zwar mit Delphi, trotzdem nette Sache *!RESPEKT!*
hast Du mal ähnliches irgendwo reingestell.
Wigbert
Hallo, sehr interessantes Projekt. Ich habe vor kurzem ein einfaches Oszilloskop entwickelt - 2 Kanaele, Samplerate 1 MSamples/sec, analoge Bandbreite 400 kHz, gut genug fuer Signale bis ca. 150 kHz. Kann sowohl positive als auch negative Spannungen darstellen (-12V bis +20V). Das Design ist open source, es kann also jeder der will nachbauen. Gesamtkosten deutlich unter US$100. Sample-Logik besteht aus bloss 4 Wald-und-Wiesen 74HCxx-Logikbausteinen, die einen ADC antreibe, der die Daten in ein SRAM uebertraegt. Die Schaltung verwendet ausschliesslich einfach handhabbare Bauteile (DIP und Through-Hole). Viel mehr Informationen gibt es hier: http://www.instructables.com/id/LCS_1M_A_Full_Featured_Low_Cost_Hobby_Oscillosc/ und hier: http://www.pdamusician.com/lcscope/ Wolfgang
Moin, Frage: ist vieleicht ein Layout vorhanden? .sch / .brd für einfaches DIGITAL- Oszilloskop (800 Datenpunkte) So richtig komme ich mit den .gif`s nicht klar.. bin ja auch nur Anfänger. Danke Dirk
@Benedikt Hallo Benedikt wie hast du die pins 4 & 8 des LM358N beschaltet ? Mit 5V und GND oder mit 5V und -5V ? Letztere Variante währe eigentlich unsinnig mit Blick auf die Z-Dioden, doch lieber nochmal nachfragen. Wie sind sie eigentlich dimensioniert ZD 5.1 1,3W ? MfG Sebastian
Guten Morgen! Ich habe mich lange Zeit mit einem Soundkartenansatz für ein PC-Oszi gespielt, das Grundrauschen der Karte aber nicht weg bekommen. Dieser Ansatz scheint eine schöne Alternative zu sein. Mein Problem: der Atmega wird ziemlich warm. Ist das normal? Kann es sein, dass die 20 MHz zu viel sind? LG Christian
@Christian >Mein Problem: der Atmega wird ziemlich warm. Ist das normal? Kann es >sein, dass die 20 MHz zu viel sind? Ja, die Erwärmung ist normal. Der ATmega8-16 wird bei 20MHz schon ordentlich übertaktet, dadurch auch die Erwärmung (ein Beschaltungs-Hardwarefehler Deinerseits schließe ich aus). Der Hersteller garantiert ein fehlerfreies Arbeiten dieses µC bis 16MHz. Kann natürlich sein, dass bei einer starken Üertaktung auch mal ein interner Prozessorfehler auftritt. Bernhard
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.