Member
Beiträge: 10.599
Themen: 355
Registriert: Jul 2012
Member
Beiträge: 896
Themen: 43
Registriert: Feb 2017
(16.03.2017, 05:33 PM)christianw. schrieb: 55V?
Ja.
http://www.mediafire.com/file/iu3v797i4m...copeNA.mp4
Hier ist es an die Testfrequenz angeschlossen. Ist mein erstes Scope, daher habe ich keine Ahnung welches Verhalten normal ist und welches nicht.
Member
Beiträge: 896
Themen: 43
Registriert: Feb 2017
noch ein Video
An USB rot sschwarz mit widerstand angeschlossen.
http://www.mediafire.com/file/1ezcgpvj8b...G_0895.mp4
Member
Beiträge: 10.599
Themen: 355
Registriert: Jul 2012
Woher sollen 55V herkommen?
Member
Beiträge: 896
Themen: 43
Registriert: Feb 2017
16.03.2017, 11:39 PM
(Dieser Beitrag wurde zuletzt bearbeitet: 16.03.2017, 11:46 PM von r0cknrolla.)
Ich weiss nicht. Sehe gerade, dass es Probleme mit dem 0.1V testsignal gibt für die Kalibierung.
Ein Firmware update soll das beheben , aber bei manchen gibts dann andere Probleme. Muss jetzt erst mal gucken das überhaupt geht, oder ob ich seriellen krams brauche.
Zitat:The PC port that we need to connect to is usually a USB port. These two ports are quite different electronically and can not be connected directly. A converter (usually called TTL-USB or Uart-USB converter) is required.
........
Toll.
http://www.ebay.de/itm/RS232-USB-Adapter...Swr~lYr~ng
gut?
Member
Beiträge: 1.770
Themen: 25
Registriert: Jan 2010
Ich hab den Eindruck dass du recht unstrukturiert an das Problem ran gehst.
Kann aber sein dass das nur so rüber kommt, übers Forum.
Christianw. hat dir, denke ich, schon den richtigen Hinweis gegeben. Zum auffinden eines Fehlers, leg doch ein bekanntes Eingangssignal an und verfolge es durch die Schaltung. Durch einfache Rechenvorschriften (nach den Verstärkerschaltungen) kannst du dir im voraus ausrechnen welche Spannung an jedem Testpunkt anliegen muss. Wenn du sie auf dem Weg bis zum ADC irgendwo nicht mehr, oder was falsches, siehst, hast du den Ort an dem dein Fehler passiert gefunden.
Member
Beiträge: 896
Themen: 43
Registriert: Feb 2017
Er hat gesagt ich soll ein bekanntes DC Signal anlegen wenn ich mich nicht täusche?
Ich habe am USB Netzteil das USB Meter dran. Es zeigt 5.12V und 0.04A.
Da steckt ein USB Kabel mit offenen Enden dran. Habe Vbus und GND an den Enden der Probes mittels kleinem Widerstand dran. Daher auch die 0.04A.
Bin ich jetzt blöd, oder was verstehe ich unter bekanntem Eingangssignal?
Geht jetzt rein nur um das Verständnis , weil aktuell das Ding nicht Wert ist weiter rumzumachen, da es diverse Fehler mit dem Teil gibt. Firmware, defekte Komponenten , PCB Fehler mit Kurzschlüssen etc. Grade bei so einem DIY Projekt sucht man dann immer den Fehler bei sich selbst und das geht auf die nerven. Endlos entlöten und löten will ich auch nicht bis ich etwas kaputt mache, was gar nicht kaputt war.
Habe mir jetzt mal ein USB UART Adapter bestellt um die neue Firmware zu flashen, falls ich sie denn bekomme. Der Hersteller baut einfach nur Mist grad. Dokumentation fehlt. Firmwares in irgendwelchen Posts angehängt, die alle gelöscht sind, weil sie "gehackt" werden.
Bin richtig sauer. Ich klinke mich mal lieber aus.
Sorry.
Member
Beiträge: 1.770
Themen: 25
Registriert: Jan 2010
17.03.2017, 11:02 AM
(Dieser Beitrag wurde zuletzt bearbeitet: 17.03.2017, 11:04 AM von E_Tobi.)
Den Schaltplan hast du ja, und dein Fehlerbild auch.
Genau, ein bekanntes DC-Signal anlegen, zum Beispiel 1V. Bei 1V Eingangssignal muss an TP1 1V anliegen.
U1A und U1B sind als unity gain einem Spannungsteiler geschaltet, also muss an V1 0.909V und an V2 0.0091V (schwer zu messen, das lieber mit 10V Eingang => 0.091V prüfen) anliegen.
UV ist als Nicht-invertrierender Verstärker geschaltet, mit einem Gain von 2. Also muss an V3 je nach "Stellung" von SENSEL3 entweder 1.8V oder 0.0181V (0.181V) anliegen.
Dann gehts weiter in die Spannungsteilerkette R7-R12, da kannst jeden Abgriff nach dem Spannungsteilergesetz ausrechnen und nachmessen.
Entsprechend auch den Ausgang von U3, der dann in das "Levelshift-Netzwerk" um U4 läuft, und so weiter und so fort...
Auf die Art kannst du Schaltungsteil für Schaltungsteil der Reihe nach prüfen und deinen Fehler so lange eingrenzen, bis du ihn gefunden hast.
Administrator
Beiträge: 10.240
Themen: 165
Registriert: Jun 2005
na, dann kauf doch sowas
http://www.ebay.de/itm/Digital-2-Kanal-2...2773642549
für 56 € inc.porto
das sollte gut funktionieren, um die Fehler auf dem 20€-dings zu finden
(und dann kannst ja immer noch zuücksenden...nicht zufrieden mit irgendwas
)
Don't worry about getting older. You're still gonna do dump stuff...only slower
Member
Beiträge: 10.599
Themen: 355
Registriert: Jul 2012
Das Teil hat keine AC-Kopplung, dafür aber eine brauchbare OpenSource-Software (OpenHantek)
Member
Beiträge: 896
Themen: 43
Registriert: Feb 2017
Heftig.
ich hab heute bei ali genau das gleiche gefunden.
Aber Versand aus DE und auch quasi zum selben Preis. Wow.
Wobei man bei ali quasi für den gleichen Preis den BL kriegt. Der hat hat zusätzlich zu den 2 Kanälen noch 16 Logische Kanäle. Was immer das auch sein mag.
Auf jeden Fall , liegt der Post von E_Tobi gedruckt auf dem Schreibtisch. Habe heute ein paar Messungen gemacht und der U1 ist eventuell nicht sauber.
Werde morgen weiter schauen.
Den Hantek habe ich deswegen angeguckt, weil er 20 MHz hat und bei einigen Tutorials für Laserpoti justierung von einem Scope mit mindestens 20 Mhz geredet wird. Aber um das jyetech zu reparieren - no way. Dafür ist der Hersteller da. Der muss dann ein Ersatzanalogboard schicken wenn der Fehler dort liegt.
Member
Beiträge: 896
Themen: 43
Registriert: Feb 2017
War Anfangs doch angetan von Hantek. Habe dann das hier gefunden.
https://www.aliexpress.com/item/2017-Han...29348.html
Die MSa/s sehen hier besser aus. Aber mein Freund Takeshi aus einem anderen Forum, hat mir dann erklärt wieso das stuss ist.
Schade.
Werde dann wohl warten bis USB 3 Scopes in diesem Preissegment angesiedelt sind.
Member
Beiträge: 15.902
Themen: 70
Registriert: Jul 2009
Was hat das mit USB3 zu tun?
...mit der Lizenz zum Löten!
Member
Beiträge: 10.723
Themen: 45
Registriert: Jan 2008
18.03.2017, 04:19 PM
(Dieser Beitrag wurde zuletzt bearbeitet: 18.03.2017, 05:05 PM von kahlo.)
Können wir auch erleuchtet werden, warum das Stuss ist? Ich kenne deinen Freund nicht, und andere Foren gibt es viele.
Member
Beiträge: 10.599
Themen: 355
Registriert: Jul 2012
18.03.2017, 05:37 PM
(Dieser Beitrag wurde zuletzt bearbeitet: 18.03.2017, 05:40 PM von christianw..)
(18.03.2017, 03:07 PM)voltwide schrieb: Was hat das mit USB3 zu tun?
Man bekommt (theoretisch) max. 48MByte/s über USB2.0 gestreamt. Alles andere braucht einen Buffer. 96Msps geht also nicht.
Problem: man ist die meiste Zeit im Blindflug.
Will man mehr, braucht man Logic mit Kompression etc. - Das bieten diese günstigen Scopes nicht, da wird in der Regel direkt über die Pipe gestreamt - kein FPGA, keine Logic - ADC direkt am Bus.
Der meiste günstige Kram (Hantel, Sainsmart, Buudai etc.) hat einen AD ADC (oder Clone 2x8Bit) + Cirrus Logic FX2LP Host-Controller mit 8051 Kern. Die Einstellung aller Parameter (Gain, Coupling, ADC) erfolgt dabei über die GPIOs des FX2LP.
48MBit/s erreicht man da nur mit einem Kanal, 2-Kanal dann max 24MBit/s.
Woher weiss ich das? Von dem USB-Scope was auch hier besprochen wurde, wofür wir (mit einigen Kollegen drüben im EEVBlog) die Hardware/Firmware/Protokoll "reverse-engineered" und OpenHantek adaptiert sowie Sigrok-kompatible FW erstellt haben.
https://github.com/doctormord/OpenBuudai
http://www.360customs.de/2014/10/usb-osz...ech-bm102/
http://www.eevblog.com/forum/testgear/sa...ai-bm102)/
Das 6022 ist schon das "Beste" war man für den Preis bekommen kann.
Member
Beiträge: 10.723
Themen: 45
Registriert: Jan 2008
Das heisst, dass das Hantek-Teil nur die Rohdaten streamt und der PC die Arbeit hat? Dann ist das tatsächlich nix...
Member
Beiträge: 896
Themen: 43
Registriert: Feb 2017
18.03.2017, 06:24 PM
(Dieser Beitrag wurde zuletzt bearbeitet: 18.03.2017, 06:24 PM von r0cknrolla.)
Doc , weiss bescheid. Wie immer.
War 360customs nicht deine Seite mit der Orangenen Xbox mit dem LCD Dran? Da hab ich mir auch den Bauplan für das DIY Komponenten Kabel abgeguckt.
Achja. Da ich nicht ruhig bleiben kann:
(14.03.2017, 09:57 PM)alfsch schrieb: +
nein, keine seltsamen Experimente am USB !!!
+
Habe diesen Ratschlag ignoriert.
So ein kleines PCB zusammengebastelt mit zwei Potis drinnen. Dann die +5V damit geteilt und (0.7V ?) an D+ und kurzzeitig D- gefüttert.
Ergebnis -> QC 2.0 Protokoll getriggert. Ladegerät springt auf 12V.
Hab aber abgestöpselt. Weil dann die Potis heiß laufen. Gut, dass ich nicht 1/4W Widerstände benutzt habe.
Wäre natürlich entspannter mit so einem linear Voltage Regulator. Muss mal aufm Humax Netzteil suchen ob ich sowas da habe.
Bisschen perfektionieren, dann kann ich auch 9V Triggern.
PCB zeig ich nicht
Sieht schlimm aus.
Member
Beiträge: 10.599
Themen: 355
Registriert: Jul 2012
18.03.2017, 07:51 PM
(Dieser Beitrag wurde zuletzt bearbeitet: 18.03.2017, 08:01 PM von christianw..)
(18.03.2017, 06:24 PM)r0cknrolla schrieb: Doc , weiss bescheid. Wie immer.
Naja, mein Wissen, verglichen mit dem Rest der hier anwesenden Bande, ist eher so "intermediate".
(18.03.2017, 06:24 PM)r0cknrolla schrieb: War 360customs nicht deine Seite mit der Orangenen Xbox mit dem LCD Dran? Da hab ich mir auch den Bauplan für das DIY Komponenten Kabel abgeguckt.
Ist immer noch.
(18.03.2017, 05:56 PM)kahlo schrieb: Das heisst, dass das Hantek-Teil nur die Rohdaten streamt und der PC die Arbeit hat? Dann ist das tatsächlich nix...
Ja, sogar der Trigger ist Software.
(Wobei, der 6022 hat einen rudimentären in HW, wenn ich mich nicht täusche)
Unser SW-Trigger für das DDS120...
Code:
for (int channel = triggerSource; chLoop < BUUDAI_CHANNELS; chLoop++, channel++) {
if (channel >= BUUDAI_CHANNELS)
channel = 0; // wrap-around to next channel
channelDataCount = (dataCount / BUUDAI_CHANNELS) - SKIP; // re-initialize for each channel
// Reallocate memory for samples if the sample count has changed
if (!samples[channel] || samplesSize[channel] != channelDataCount) {
if (samples[channel])
delete samples[channel];
samples[channel] = new double[channelDataCount];
samplesSize[channel] = channelDataCount;
}
// Convert data from the oscilloscope and write it into the sample buffer
unsigned long int bufferPosition = SKIP ;//+ triggerPoint * 2;
unsigned int bufferFraction = (dataCount / BUUDAI_CHANNELS) / 2; // only use a fraction of samplebuffer, scales with timebase via bufferMulti to catch slow signals on longer timebase.
// For buffersizes < 2048 no initial shift is needed, as data fits in fifo without glitch
if (oldTriggerOffset > SKIP && oldTriggerOffset <= dataCount && channel != triggerSource)
bufferPosition = oldTriggerOffset; // Use same trigger position offset found by trigger source
// Trigger Hack for rising edge or falling edge trigger
double dataValueOld = 0;
unsigned long int firstTriggerPos = 0; // first trigger position that will be confirmed by another 3 hits
int hitCounter = 0;
int bad_Case = 1; // Assume bad case where start dataValue above TriggerPositionOffset for rising edge trigger
// and where start dataValue below TriggerPositionOffset for falling edge trigger to avoid false positive
for (unsigned int triggerPositionIndex = 0; triggerPositionIndex < bufferFraction && channel == triggerSource; triggerPositionIndex++){ // Only search for trigger position offset if channel is trigger source
double dataValue = ((double) data[bufferPosition + channel]/sampleRange[channel] - offsetReal[channel])*gainSteps[gain[channel]]*cal[channel];
// Search only when dataValue is NOT above TriggerPositionOffset for rising-edge trigger and
// when dataValue is NOT below TriggerPositionOffset for falling edge trigger to prevent false positive
if (bad_Case == 1 && (bufferPosition + (dataCount >> 7) + channel) < dataCount) {
// Look ahead comparison provide more stable rising edge detection
if (triggerSlope == Dso::SLOPE_POSITIVE) { // Look ahead step size based on time base (aka buffer size)
if (dataValue < (triggerPositionOffset-0.02)) { // so slow signal edge detect is more reliable
if (data[bufferPosition + channel] < data[bufferPosition + (dataCount >> 11) + channel])
hitCounter++;
if (data[bufferPosition + channel] < data[bufferPosition + (dataCount >> 10) + channel])
hitCounter++;
if (data[bufferPosition + channel] < data[bufferPosition + (dataCount >> 9) + channel])
hitCounter++;
if (data[bufferPosition + channel] < data[bufferPosition + (dataCount >> 8) + channel])
hitCounter++;
if (data[bufferPosition + channel] < data[bufferPosition + (dataCount >> 7) + channel])
hitCounter++;
}
}
else if (triggerSlope == Dso::SLOPE_NEGATIVE) { // Look ahead comparison for falling edge detect
if (dataValue > (triggerPositionOffset+0.02)) { // +0.02 (arbitary) forced a better comparison
if (data[bufferPosition + channel] > data[bufferPosition + (dataCount >> 11) + channel])
hitCounter++;
if (data[bufferPosition + channel] > data[bufferPosition + (dataCount >> 10) + channel])
hitCounter++;
if (data[bufferPosition + channel] > data[bufferPosition + (dataCount >> 9) + channel])
hitCounter++;
if (data[bufferPosition + channel] > data[bufferPosition + (dataCount >> 8) + channel])
hitCounter++;
if (data[bufferPosition + channel] > data[bufferPosition + (dataCount >> 7) + channel])
hitCounter++;
}
}
if (hitCounter >= 3) // Enable trigger position search by 3 hits out of 5 in sliding window
bad_Case = 0;
hitCounter = 0; // Reset for next step to confirm trigger position or next attempt to enable search
}
if (bad_Case == 0 &&
((dataValue > dataValueOld && dataValue > triggerPositionOffset && triggerSlope == Dso::SLOPE_POSITIVE) ||
(dataValue < dataValueOld && dataValue < triggerPositionOffset && triggerSlope == Dso::SLOPE_NEGATIVE)))
{ // Normal case search
// Tried sliding window search same as the above edge detection but not as stable for square waves
hitCounter++;
if (hitCounter == 1)
firstTriggerPos = bufferPosition; // First trigger position found
if (hitCounter >= 4) { // Confirm first trigger position by 3 more hits
bufferPositionOffset = firstTriggerPos;
oldTriggerOffset = firstTriggerPos; // Set confirmed trigger position to first hit position to keep
bufferPosition = firstTriggerPos; // the start of displayed waveform close to trigger position cursor
firstTriggerPos = 0; // Reset for next data transfer cycle
hitCounter = 0;
bad_Case = 1; // Reset to bad case assumption for next data transfer and search cycle
break;
}
}
dataValueOld = dataValue;
bufferPosition += 2; // Next position to check
}
if (oldTriggerOffset == SKIP && channel == triggerSource)
bufferPosition = SKIP; // No trigger position found reset buffer position for free running waveforms
// triggerPosition
//bufferPosition = int(bufferPositionOffset + (triggerPosition * 2));
// shorten data due to trigger offset
if (oldTriggerOffset > SKIP) // Check if trigger position is found. Otherwise, allow free running waveform
channelDataCount = channelDataCount - (bufferPosition / 2);
// put data on screen
for (unsigned long int realPosition = 0; realPosition < channelDataCount ; realPosition++) {
if (bufferPosition >= dataCount)
bufferPosition %= dataCount;
samples[channel][realPosition] = ((double) data[bufferPosition + channel]/sampleRange[channel] - offsetReal[channel])*gainSteps[gain[channel]]*cal[channel];
bufferPosition += 2; // Next position to check
}
}
oldTriggerOffset = SKIP; // Clear trigger position for next cycle free running waveforms when no trigger found
samplesMutex.unlock();
// limit framerate and load but be somewhat in sync with samplerate to avoid glitches
if (bufferMulti < 2) {
usleep(32768);
} else {
// usleep(bufferSize);
}
emit samplesAvailable(&(samples), &(samplesSize), (double) samplerateMax / samplerateDivider, &(samplesMutex));
} // if (process)
return 0;
}
Member
Beiträge: 10.723
Themen: 45
Registriert: Jan 2008
Member
Beiträge: 10.599
Themen: 355
Registriert: Jul 2012
Du sagst es.
Aber während die mitgelieferte Software gefühlte 10fps macht, läuft "Open Buudai" (OpenHantek Port) mit 60+fps. (und stabilem Trigger).