Previous posts for this project:
- [CaTS] ForgetMeNot - Index
- [CaTS] ForgetMeNot - Week 0: Project Description
- [CaTS] ForgetMeNot - Week 1: EnOceanPi and Sensors
- [CaTS] ForgetMeNot - Week 2: Elro CoCo and Pi Cam with OpenHAB
- [CaTS] ForgetMeNot - Week 3: Data persistence and charts with OpenHAB
- [CaTS] ForgetMeNot - Week 4: Arduino-OpenHAB communication
- [CaTS] ForgetMeNot - Week 5: Getting familiar with EAGLE
- [CaTS] ForgetMeNot - 3D Printing: EnOcean sensor bracket
- [CaTS] ForgetMeNot - 3D Printing: EnOcean rocker switch and magnet holder
- [CaTS] ForgetMeNot - 3D Printing: Food dispenser prototype
- [CaTS] ForgetMeNot - 3D Printing: Weighing scale
- [CaTS] ForgetMeNot - Security: Some basic tips
Introduction
I'm back in town and still a bit jet lagged, but it's time I posted an update again.
As part of this challenge's kit, most of us received an oscilloscope. A Tektronix TBS1052B-EDU to be more precise.
I haven't worked with an oscilloscope in over seven years. The last time I did was when I was still in school, and even then, I wasn't very proficient in its use.
Now that I have my very own oscilloscope, I can take the time to know it better and learn to gradually master its features.
This post describes my first actions with the oscilloscope.
Beginner
As stated in the intro, I will approach the TBS1052B-EDU oscilloscope as a complete newbie. So if you're already familiar with oscilloscopes, this post will probably not be very interesting
Other, more experienced members have already posted their experiences with the scope, you can find some of them here:
- Forget Me Not Design Challenge Week 04: Tektronix TBS1052B-EDU Oscilloscope by p-brane
- Review of Tektronix TBS1052B-EDU by kipe
- Forget Me Not : eLDERmon Sponsor Parts by mcb1
- IP Post 7: The Raspberry Pi Power Analysis featuring the Tektronix Scope by ipv1
Registration
The first thing I did after unboxing my brand new oscilloscope was to regist... nope. First thing I did was to attach the colored rings to the probes, I couldn't help myself, sorry.
After marking the probes, I proceeded with the registration.
You can't really miss it. There is big "Alert" sticker on the scope's display asking to register the scope. On top of it, by registering, you're entering a draw to win another scope.
The registration only took a couple of minutes, and after that, I had access to a bunch of documentation and software for my device.
Documentation and software
Library
There is a lot of documentation available once registered. The main page: TBS1000B-EDU Digital Storage Oscilloscope | Tektronix offers links to a library with a lot of documentation and there is even a PDF download for the "XYZ of Oscilloscopes".
I have only gone through some of it so far, but it looks like I'll be able to learn a lot about oscilloscopes, how they work and how they're used.
OpenChoice
One of the tools available is called "OpenChoice". I've seen other contestants make use of it in their blog posts.
OPENCHOICE DESKTOP APPLICATION TDSPCS1, V2.4 | Tektronix
When checking the prerequisites, the popup was blank. Somehow, I ended up resizing it (probably when making screenshots for this blog) and suddenly the text appeared.
Has anyone else experienced this ?
Anyway, after reading the prerequisites, I was forced to conclude that this would not run on my Linux or Mac machines, as this is a Windows only tool ... too bad.
For now, I will not bother setting up a Windows virtual machine, I'll just stick with the USB drive approach to save data and then read it on my Mac afterwards.
Courseware
A second tool which is available is "Courseware".
PC COURSEWARE EDITOR SOFTWARE, V1.0 | Tektronix
This tool offers the possibility to define, edit and manage exercises which can be uploaded onto the EDU oscilloscopes for user to execute. There are tons of additional exercises made available in the library, to get to know the oscilloscope better, using Arduino or even Raspberry Pi.
Unfortunately, again, Windows-only ...
YouTube
I also found a video playlist on the Tektronix youtube channel, containing some short introduction level content on making measurements and triggering on digital signals: Using the TBS1000B Series Education Oscilloscopes
This is the type of content I prefer. It's visual, hands-on and easy to follow along.
Firmware upgrade
When browsing the scope's page on the Tektronix website, I noticed there was a very recent firmware version: Firmware Update for TBS1000B and TBS1000B-EDU Series Oscilloscopes, V2.52 | Tektronix
So recent in fact, that it couldn't already be on my scope. This was a good opportunity to test the firmware upgrade.
Browsing through the menus, I found that my scope was running firmware version 2.02.
I downloaded the new firmware file for version 2.52, put it on a FAT32 formatted USB stick and inserted it in the frontpanel of the scope. Browsing through the menus some more, I found the option to trigger the upgrade:
The update took a few minutes, and I was then prompted to reboot the device. After reboot, I checked the firmware version again, and bingo, it was updated.
Well, that was an easy and straightforward upgrade!
Probe calibration
As Mark mentioned in his post, there is something strange about the calibration. The probe check doesn't work (yet ?) and the self calibration requires the probes to be disconnected.
I connected my probe to the "PROBE COMP" and checked the square wave. It looks ok at first sight, but when zooming in on the edges, it is quite "round".
The device is supposed to come calibrated, so I'll assume this is normal and as expected.
First test
A first test I performed to get used to the controls of the scope was to analyse a PWM signal from an Arduino.
I started off with a 50% duty cycle signal by using following Arduino code:
void setup() { pinMode(11, OUTPUT); analogWrite(11, 127); } void loop() {}
Hooking up the Ch1 probe to pin 11 and GND on the Arduino, I starting pushing some buttons.
Measurements
The scope offers the possibility to automate some measurements. It is possible to display up to six different measurements on screen from a list of thirty-something available options.
I tested the feature by adding some measurements relevant to my PWM signal (some redundant, like the positive and negative duty, I know ...).
While performing these measurements, I also learned how to scale and position the data both vertically and horizontally.
Cursors
Automated measurements are nice to have, but it is good to know how to perform some of them manually.
To try this out, I used cursors. Cursors can be used vertically to measure time, and horizontally to measure amplitude.
Autoset
Another way to quickly display some data is to use the Autoset feature. It offers the possibility to quickly visualise the signal, one cycle or even rising and falling edges.
The picture on the left represents a rising edge on the PWM signal of an Arduino. The right picture represents a rising edge on the "probe comp" signal of the oscilloscope, as shown earlier in the calibration step.
Second test
The second test I performed, was analysing the commands of the remote controlled Elro sockets used in my project (see [CaTS] ForgetMeNot - Week 2: Elro CoCo and Pi Cam with OpenHAB).
I'm already using a library, which is doing all the work for me, but what exactly does the library do and how do these wireless signal even look like ?
Measure
I removed the cover from the remote control and searched for a point to measure. Unfortunately, there was no point I could properly attach my probe to. So I soldered a wire to resolve that issue.
When pressing one of the buttons on the remote, I can see a repetitive signal on the scope. However, as soon as I let go, the signal is gone from the scope's screen.
I selected the "Single" button on the scope, pressed the button on the remote, and there it was. The scope stopped automatically, keeping the capture signal on screen for me to analyse.
I've been comparing signals when pressing different buttons on the remote.
Interpret
Taking the assumption that a short HIGH (approx 280us HIGH, then 980us LOW) would represent a logical 0 and a long HIGH (approx 940us HIGH, then 310us LOW) a logical 1, I've come to following measurements:
House | Unit | ON/OFF | Measurement |
---|---|---|---|
C | 13 | ON | 0001000000000101000101010 |
C | 13 | OFF | 0001000000000101000101000 |
C | 16 | ON | 0001000001010101000101010 |
C | 16 | OFF | 0001000001010101000101000 |
A | 16 | ON | 0000000001010101000101010 |
P | 16 | ON | 0101010101010101000101010 |
From the above measurements, the structure of a command seems to be as follows:
[0]-[House (A-P): 00000000 - 10101010]-[Unit (1-16): 00000000 - 10101010]-[001010]-[ON/OFF: 00 - 10]
I'm not sure this translation makes complete sense, but it does help derive all combinations as a set of pulses.
Reproduce
Using an Arduino, I tried to recreate these sequences of pulses in order to control the sockets without the remote.
To verify this would work, I wrote a (very inefficient) sketch which would just write the sequence. As mentioned before, there are libraries out there doing all this work for you, but by doing all this, I understand a little bit better what happens behind the scenes AND it is a good measuring exercise using the oscilloscope.
void writeOne() { digitalWrite(pin,HIGH); delayMicroseconds(940); digitalWrite(pin,LOW); delayMicroseconds(300); } void writeZero() { digitalWrite(pin,HIGH); delayMicroseconds(290); digitalWrite(pin,LOW); delayMicroseconds(950); }
This is the recreated signal using the Arduino. By measuring the output, I was able to improve the timing to compensate for any delays introduced by the code.
It works! I can hear the socket in the background going on and off.
Conclusion
Using the oscilloscope, I was able to visualise wireless transmission, search for patterns and figure out the structure of the data being sent.
Even though I didn't really have (fresh/recent) experience with oscilloscopes, I was able to get on with it rather easily, thanks to the many resources available including those of fellow contestants.
I am however a little disappointed in the additional software being Windows-only, but that is something I can live with for the time being.