Lately I have been lazy about getting into my home, early in the morning I dislike rummaging through my pockets to get out my keys just to go through 2 doors just to get in and sit down. So I fixed this issue by making my patio door RFID accessible. With a few parts on hand and a whole bunch of time, I made a “patio un-locker”, because it only unlocks the patio door but does not lock it.
Tag Archives: Hardware
430 work shop links and source code
source code zip of all the projects that were demoed at workshop 88 http://www.workshop88.com/
demos
(the code is in mspgcc format and may need alterations to compile for CCS & IAR)
Sources code for Shift register demo
original code here
servo demo
original source
Music demo
Original source here
The RGB demo was not there
source http://justinstech.org/projects/msp430-rgb-flower-pot/
TTL/MOS timer experiments
I have this dual 556 timer that i have wanted to use, just because it can take 15V and work with out an issue and as low as 3V. (thanks TI) So i was thinking that this had some potential to be used for RF or a fixed PWM signal. (personally i would like to pick up a few digital POTs and a digital cap to to create a DCO of some sort)
So far i have played with it and found some interesting things out.
TLC556 Dual Cmos Timer Data Sheet
My first goal was to get a 50% duty cycle from the chip, this was pretty easy just choosing the correct values for Ra and Rb, but you will have to do some math and you should use the equation out of the data sheet for your chip. My equati0n Period = tH + tL ~= CT (RA + 2RB) In 2, but if you need values closer to what is measured, you will have to break out the TI 8x and plug in tH = Ct (Ra + Rb) ln [ 3 - exp(-t PHL / Ct (Rb + Ron) ) ] + t PHL and Tl = Ct (Rb + Ron) ln [ 3 - exp(- t PHL/ CT(Ra + Rb)) ] + tPLH. I know these equations look difficult but as long as you plug in your values you will get close to what you measure on your oscilloscope. but i did this the fun way, use the first equation to get close to what you need then tweak the rest of the values until you get something close to what you want.
The values that i chose first were the Ra and Rb, I chose Ra = 220 ohms and Rb = 100 ohms and Ct = .0047 uF. Rl and Cl i did not choose a value nor did i hook up those components, i will have to look into the reason they are there, but i’m sure they are there for good reason. This first Test was just to make sure i can get a good square wave and be able to shape it.
the new values that i used are – will update later, but frequency is near 1 Mhz
My second goal was to try and make a sine wave or shape the square wave to be better for RF transmission. I added a Pi Network to the out put to shape the wave and below is what i got for half of the pi network, i will have better pics of the final wave form once my circuit is a little more complete.
another pic
If all goes well and i can create a pretty stable transmitter i will be hooking up a small modem chip to the circuit and create a cheap digital modem . Another thing that would be nice would be a pair or transmitters and receivers so i can send and receive at the same time.
update-
R1 100 ohms
R2 220 ohms
C1 .0047uF
MSP430 RGB V0.1
Tagged as electronics, Hardware, msp430, Programming, PWM
A different take on how to create a PWM signal. I decided to go the interrupt route using the WDT+ peripheral. I did this by setting it to the interval timer and putting all my counters and logic within the interrupt. The funny thing is i have read that you shouldn’t put too much code into your interrupt, or something bad will happen.
the resistors on the left, are 100 ohm resistors and the one on the right is a 470 ohm resistor to limit current for the RGB LED. connections on the uC that are used are pins 1.3, 1.4, 1.5 i have not decided which pins are what color, i will decide that on my final build.
The test code will be improved this is just the compile and see if it works.- The best part , the code works lol .
so let me know what you think on creating PWM with the interval timer instead of timer A.
#include <msp430x20x2.h>
#include <signal.h> //add for interrupt
#define UP 0x00
#define DOWN 0x01
volatile int millsecs = 0;
volatile int counter2 = 0;
volatile int led_red = 0;
volatile int led_green = 199;
volatile int led_blue = 199;
volatile int dir = UP;
void main(void)
{
WDTCTL = WDT_MDLY_0_064;
P1DIR |= BIT5 + BIT4 + BIT3;
P1OUT |= BIT5 + BIT4 + BIT3;
IE1 |= WDTIE;
eint();
}//end main
interrupt(WDT_VECTOR) watchdog_timer(void)
{
++millsecs;
if (millsecs == 200) { millsecs= 0; P1OUT |= BIT0 + BIT6; ++counter2; }
if (millsecs == led_red ) { P1OUT ^= BIT3; }
if (millsecs == led_green) { P1OUT ^= BIT4; }
if (millsecs == led_blue ) { P1OUT ^= BIT5; }
if (counter2 == 25 ) { counter2 =0;
switch (dir){
case UP: ++led_red; --led_green; --led_blue;
if (led_red == 199) {dir = DOWN;}
break;
case DOWN: --led_red; ++led_green; ++led_blue;
if (led_red == 0) {dir = UP;}
break;
}//end switch
}//end if
}//end interrupt
To change the Period length – change the 200 value to the period you want, you can also change it by setting the WDT interval to different intervals to change the period.
to change the Duty cycle, change the led_[color] variable to anything between 0 and period length
I am still working on trying to get it to cycle through all colors, and fade better when led_[color] is close to 0
by far this project is not done, the board will be soldered up and pics will be presented. The end result should be code for WDT PWM, which could be used for servos, LEDs, or possibly communication, and i will have my flower pot back!










