7 Kasım 2014 Cuma
APRS transponder now with 1W output
Did some more work on the minimalistic APRS transponder. Made a test circuit board that allowed for adjusting component values. It now output 1Watt at 7.2V
UPDATE: Some pins have changed so this schematic is NOT compatible with the code posted earlier
Updated code HERE
Added a voltage regulator for 2LiPo cell operation.
Here is a quick video of my test setup transmitting 1W.
28 Ekim 2014 Salı
Tone/DTMF detector library for Arduino
Was playing with some cheap radios and decided that the keypad DTMF tones could be used for remote control.
I had some old source that detected touch tones using a AVR microcontroller and decided to convert it for Arduino.
This resulted in a library that detect audio tones played into any Arduino pin.
The audio is first clipped to a 1-bit signal (played loudly into a digital pin) then sampled at 10kHz.
256 1-bit samples (25.6mS) can then be analyzed for the content of one or more audio tones.
The analyzer uses a crude 1-bit DFT but works surprisingly well at detecting multible tones such as DTMF or guitar plucks.
The result can be presented as either a DTMF symbol or approximate signal strength for any frequency analyzed (up to 5kHz).
Here is the library for now (will move to github).
I had some old source that detected touch tones using a AVR microcontroller and decided to convert it for Arduino.
This resulted in a library that detect audio tones played into any Arduino pin.
The audio is first clipped to a 1-bit signal (played loudly into a digital pin) then sampled at 10kHz.
256 1-bit samples (25.6mS) can then be analyzed for the content of one or more audio tones.
The analyzer uses a crude 1-bit DFT but works surprisingly well at detecting multible tones such as DTMF or guitar plucks.
The result can be presented as either a DTMF symbol or approximate signal strength for any frequency analyzed (up to 5kHz).
Here is the library for now (will move to github).
Magnetic levitation
Some students wanted to build a toothbrush holder that floated a toothbrush in mid air to avoid contamination.
I build a prototype to see if it was possible to implement the control system in software.
This project allow a small permanent magnet to be levitated by a electro magnet.
Since static passive magnetic levitation is not possible a HALL effect sensor
is used to constantly regulate the magnetic field.
To achieve stability a software based PID controller is used.
5 potentiometers is used to control the PID parameters.
This is the Arduino code for the project
I build a prototype to see if it was possible to implement the control system in software.
This project allow a small permanent magnet to be levitated by a electro magnet.
Since static passive magnetic levitation is not possible a HALL effect sensor
is used to constantly regulate the magnetic field.
To achieve stability a software based PID controller is used.
5 potentiometers is used to control the PID parameters.
This is the Arduino code for the project
Minimalistic APRS transponder
After working on a High altitude Balloon project I got interested in APRS.
APRS is basically a radio amateur driven network that among other things lets you broadcast your position worldwide on VHF radio.
For out project we used this APRS transponder to keep track of the balloon.
Mostly for the challenge I decided to build a really small and inexpensive APRS tracker you wouldn't be too sad to loose.
UPDATE: The example code uses a ATTINY85. Change to ATTINY45 in AtmelStudio if using this chip.
I used a FS6377 integrated clock synthesizer as the VHF transmitter. This chip is I2C programmable and is able to generate 144.8MHz (or 144.39MHz for US) from a 20MHz crystal.
The FS6377 does not have a modulation input but I was able to modulate the crystal oscillator using a simple variable capacitance diode.
I chose the ATTINY85 microcontroller form Atmel because it is cheap and available in a really small package.
The BELL202 modem signal needed for APRS is synthesized inside the ATTINY85 microcontroller and output as a PWM signal.
The frequency of the modem tones need to be very precise and since the internal clock is not very accurate I chose to generate a 10MHz clock frequency externally. It is possible to tune the internal clock in software to gain an extra I/O pin but I didn't need it here.
The transponder really show potential to miniaturized. The transmit power is around 30mW enough for long range if transmitting in line of sight.
The project is heavily inspired by the Trackduino project.
Here is the source code for the project as an AtmelStudo project
UPDATE: Fuses are EXTENDED 0xFF : HIGH 0xDF : LOW 0xC0
UPDATE:
Use this program to change for other frequencies:
http://www.onsemi.com/pub/Collateral/FS6377_REV3.1.0.ZIP
This is the current configuration. Mind that the registers are in reverse order from the order they are sent in transmitter.cpp in the project.
APRS is basically a radio amateur driven network that among other things lets you broadcast your position worldwide on VHF radio.
For out project we used this APRS transponder to keep track of the balloon.
Mostly for the challenge I decided to build a really small and inexpensive APRS tracker you wouldn't be too sad to loose.
UPDATE: The example code uses a ATTINY85. Change to ATTINY45 in AtmelStudio if using this chip.
I used a FS6377 integrated clock synthesizer as the VHF transmitter. This chip is I2C programmable and is able to generate 144.8MHz (or 144.39MHz for US) from a 20MHz crystal.
The FS6377 does not have a modulation input but I was able to modulate the crystal oscillator using a simple variable capacitance diode.
I chose the ATTINY85 microcontroller form Atmel because it is cheap and available in a really small package.
The BELL202 modem signal needed for APRS is synthesized inside the ATTINY85 microcontroller and output as a PWM signal.
The frequency of the modem tones need to be very precise and since the internal clock is not very accurate I chose to generate a 10MHz clock frequency externally. It is possible to tune the internal clock in software to gain an extra I/O pin but I didn't need it here.
The transponder really show potential to miniaturized. The transmit power is around 30mW enough for long range if transmitting in line of sight.
The project is heavily inspired by the Trackduino project.
Here is the source code for the project as an AtmelStudo project
UPDATE: Fuses are EXTENDED 0xFF : HIGH 0xDF : LOW 0xC0
UPDATE:
Use this program to change for other frequencies:
http://www.onsemi.com/pub/Collateral/FS6377_REV3.1.0.ZIP
This is the current configuration. Mind that the registers are in reverse order from the order they are sent in transmitter.cpp in the project.
12 Mayıs 2014 Pazartesi
A bit more wheelchair stuff
Figured out some more details about the actuator data format.
Also a short video from FabLabRuc of me driving the wheelchair using a HCD controller.
Also a short video from FabLabRuc of me driving the wheelchair using a HCD controller.
11 Mayıs 2014 Pazar
Hacking electric wheelchair drive
While building some robots for a museum we came up with the idea of using an electric wheelchair as the base for the robot.
Not wanting to replace the electronics we gave it a shot to try to use the existing motor driver and control it from an Arduino. On inspection it turned out to be a very common Penny and Giles Pilot plus drive.
I turns out that the joystick sends drive data packets with checksum roughly every 10mS. Immediately after the data line changes direction and the motor controller returns a packet of data, again with checksum.
Simultaneously but not in sync another data signal is sent to control lights and actuators.
The data format seem to be completely non-standard but relatively simple to encode.
Probably for safety reasons the system does not tolerate any signals being missing or corrupted without shutting down so a fair bit of probing and fiddling went in to eliminating the joystick and replacing it with an arduino.
Here is a rough cut first Arduino sketch that allowed us to drive the wheelchair motors actuators and lights.
Quick shaky video of it running.
We plan to turn out a easy-to-use Arduino library for controlling the PG Pilot Plus soon.
Not wanting to replace the electronics we gave it a shot to try to use the existing motor driver and control it from an Arduino. On inspection it turned out to be a very common Penny and Giles Pilot plus drive.
(Photo wheelchairdriver.com)
Very little technical information is available about the interface between the joystick- and motor unit of this system. So we started reverse engineering. Here is what we have found so far.By opening up the joystick and probing connections inside we found that the joystick movement are communicated as serial data @19200BAUD, 8 databits and even parity. Apart from the driving data the joystick unit also emit an additional, and completely different, data stream for controlling various lights and actuators on the chair.
The physical connection is using a propitiatory 6 way connector.I turns out that the joystick sends drive data packets with checksum roughly every 10mS. Immediately after the data line changes direction and the motor controller returns a packet of data, again with checksum.
Simultaneously but not in sync another data signal is sent to control lights and actuators.
The data format seem to be completely non-standard but relatively simple to encode.
Probably for safety reasons the system does not tolerate any signals being missing or corrupted without shutting down so a fair bit of probing and fiddling went in to eliminating the joystick and replacing it with an arduino.
Here is a rough cut first Arduino sketch that allowed us to drive the wheelchair motors actuators and lights.
Quick shaky video of it running.
We plan to turn out a easy-to-use Arduino library for controlling the PG Pilot Plus soon.
26 Nisan 2014 Cumartesi
The_synth Arduino library got an upgrade
A while ago I released a Arduino synthesizer library. A new and improved version is now available github:
https://github.com/dzlonline/the_synth
I was asked to play a small concert at my friends PhD defense using an Arduino running this library.
Listen to the result here:
https://dl.dropboxusercontent.com/u/2248531/the_synth_concert.mp3
The music was sequenced using Ableton Live and sent to the Arduino via. MIDI @ 31250 BAUD serial data. The output from the Arduino was a 8 bit PWM signal that was subsequently lowpass filtered using a simple LC filter.
Part of the low pass filtered audio signal was sent back through a echo effect processor (inside Ableton) to add a bit of flavor and make it tolerable to regular people :)
https://github.com/dzlonline/the_synth
I was asked to play a small concert at my friends PhD defense using an Arduino running this library.
Listen to the result here:
https://dl.dropboxusercontent.com/u/2248531/the_synth_concert.mp3
The music was sequenced using Ableton Live and sent to the Arduino via. MIDI @ 31250 BAUD serial data. The output from the Arduino was a 8 bit PWM signal that was subsequently lowpass filtered using a simple LC filter.
Part of the low pass filtered audio signal was sent back through a echo effect processor (inside Ableton) to add a bit of flavor and make it tolerable to regular people :)
Kaydol:
Kayıtlar (Atom)







