Jump to content
43oh

120 LED Ring Clock


Recommended Posts

Got my components, soldered up the first completed controller board.
 
post-274-0-39697500-1396616473_thumb.jpg
The small level shifter, is designed around a dual n/p mosfet. This will probably be changed to a dedicated level shifter in the future. Due to gate capacitance of the mosfets, the output isn't as square as the input. Luckily it gets close enough to work. This is mainly due to the high frequency of the LEDs signal.

 

The accelerometer is connected via IIC, which I have never used extensively before. I still haven't worked out the repeated start condition, which the accelerometer requires for individual register reading.

post-274-0-12001800-1396617895_thumb.jpg post-274-0-06478300-1396618069_thumb.jpg

 

so it's proven that the G2553 has enough grunt to run all 120 LEDs. 70% of RAM is used as a rgb framebuffer, with 152 bytes left there is still plenty for some rich applications.

 

And since people don't read anything these days here is a video. (sorry about the audio, I thought I should pick something ;))

 

Even though I've bought a fancy DSLR photographing/filming LEDs is very difficult. I've been experimenting with settings, but this still does look better in real life.

Link to post
Share on other sites
  • Replies 149
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Hey, It's been along time since I've posted. but I've been keeping busy with uni and working on some cool projects for the last year.   This is something I'd like to share with you guys, it's not fi

I've been working on the code for the control board. Here is a quick demo.       I've ordered a few more parts (accelerometer, regulator, levelshifter) which my board is running without curr

Here is an updated PCB. 100% compatible with the old one. However this one features the new WS2812B footprint.   Here is the Altium project files. Includes gerbers and schematics. ledRing_2.zip

Posted Images

Update for users that have requested controller boards.

 

post-274-0-17915400-1396883697_thumb.jpg

They've all be soldered up, and they all program fine.

 

I just want to make sure that the accelerometers work, and that these boards can actually drive LEDs :P

 

I hit a wall with my demo program, and the i2c code I was using, it didn't support repeated start, which this accelerometer needs to read from any registers other than accelerometer data.

I only made progress when I started using an ez430-rf2500 board, hooked upto a sensor board, (both MSPs have UCB0 for i2c), using my scope I finally got some code to work.

 

Unfortunately as I'm a full time uni student, I might not have enough time (during business hours) to post the boards off tomorrow. But it will happen later this week.

 

Edit:

I think others mentioned they've measured current, but I couldn't find their results.

I don't have any high powered +5v sources (except maybe some PC ATX power supplies hmmmm)

 

So 3 LEDs max brightness (r,g,b ), measured 0.28A @ 5.0v

so, following that logic, all 120LEDs would come to 0.28 * (120/3) = 11.2A, which is about 56W

 

If you wanted to run them at that brightness they do start to generate heat. But it is a possibility ;)

Link to post
Share on other sites

You're running the LEDs off a G2553, that's quite impressive. I tried to drive WS2812 using the USCI, failed, and then tried the timer, also failed. I'm assuming you're driving them directly using cycle-counting?

 

As for I2C restarts, USCI does support them, but the stock TI code (TI_USCI_I2C_master.c) does not seem to. I vaguely remember being annoyed about this in the past, but this is not the first time I was annoyed at the sad state of TI-supplied libraries. This is why I wrote my own USI I2C library, after all.

 

Some I2C devices that are specified to use repeated start will also let you read in two phases, with a stop condition inbetween, remembering the register address. You might try if that works for you.

Link to post
Share on other sites

You're running the LEDs off a G2553, that's quite impressive. I tried to drive WS2812 using the USCI, failed, and then tried the timer, also failed. I'm assuming you're driving them directly using cycle-counting?

 

As for I2C restarts, USCI does support them, but the stock TI code (TI_USCI_I2C_master.c) does not seem to. I vaguely remember being annoyed about this in the past, but this is not the first time I was annoyed at the sad state of TI-supplied libraries. This is why I wrote my own USI I2C library, after all.

 

Some I2C devices that are specified to use repeated start will also let you read in two phases, with a stop condition inbetween, remembering the register address. You might try if that works for you.

Not cycle counting. I'm using the USCI_A. clocked at just the right frequency. I can transmit a 0x80 or 0xe0 to correspond to the '1' or '0' state. This function is written in assembly, but it doesn't have to be as the timing between pulses isn't as critical as the +width.

 

Here is code that @@RobG wrote. (maybe out of date) but it's the exact same method that I am using. His timings are slightly different. 

 

Yes, I have the USCI_B I2C working now. I only implemented my particular case, START write 1 byte, START read x bytes STOP. I did this with polling rather than an interrupt driven approach, because I can't be too generous with static RAM. 

 

The libraries provided give a bit of insight into how the hardware works. But you will learn more if you can write your own functions though, it just takes time. which may or may not be valuable. 

 

The MMA8453 resets it's address counter when a STOP is received. Alot of people online have found this frustrating :P 

Link to post
Share on other sites

Not cycle counting. I'm using the USCI_A. clocked at just the right frequency. I can transmit a 0x80 or 0xe0 to correspond to the '1' or '0' state. This function is written in assembly, but it doesn't have to be as the timing between pulses isn't as critical as the +width.

 

Here is code that @@RobG wrote. (maybe out of date) but it's the exact same method that I am using. His timings are slightly different. 

 

Yes, I have the USCI_B I2C working now. I only implemented my particular case, START write 1 byte, START read x bytes STOP. I did this with polling rather than an interrupt driven approach, because I can't be too generous with static RAM. 

 

The libraries provided give a bit of insight into how the hardware works. But you will learn more if you can write your own functions though, it just takes time. which may or may not be valuable. 

 

The MMA8453 resets it's address counter when a STOP is received. Alot of people online have found this frustrating :P 

 

USCI! That's even more impressive, then. I never managed to get the timings just right, and I couldn't get new data to the USCI in time

Link to post
Share on other sites

I've hit a wall when I started testing some of the boards. 

They all program fine. They all seem to be able to drive LEDs.

 

But, for half of the bards, the crystal oscillator doesn't start.  :'(

 

This is the particular crystal I have on all the boards. It is working perfectly on half of the boards, but not on the other half. :/

I've been reading This app note from TI, and am experimenting with some of the solutions provided.

Link to post
Share on other sites

Turns out that the solution was a lot simpler.

After trying various load capacitance values, and testing some parallel resistances I discovered that the did boards had a parallel resistance 1-2M ohm. The working board did not.

The culprit. Flux that hid from my washing process.
post-274-0-17765800-1397306749_thumb.jpg
Looks fine once I had soldered and washed the board to remove flux residue. But let's look underneath.
post-274-0-77504700-1397306907_thumb.jpg

Because this is a low power oscillator this is enough to render it useless. I have hot air removed/cleaned/hot air reworked all the non working crystals. And they now all work.

Shipping Monday when the PO opens up. Thanks for everyone's patience :)

Link to post
Share on other sites
  • 2 weeks later...

an update.

 

I've never encased a full electronics project in clear resin before, but thought it would make the ring look more professional.

post-274-0-34063400-1398175793_thumb.jpg

 

I've got to wait a day or two to make sure it's fully cured, then I have to find out how to remove it safely from my mold.

post-274-0-90428400-1398175411_thumb.jpg

 

 

It'll either be awesome, or a complete failure. :P

Link to post
Share on other sites

So I must have got my portions wrong when I mixed in the catalyst with the resin, because it's only just beginning to dry. and it's been a few days already.

 

I can't sand/buff it until it is completely hard, so it might be a few more days u_u

 

@@igendel that's a pretty cool project. I was hoping to have this clock finished to a reasonably high standard to enter the same competition on instructables.

 

Also see here, adafruit now sell a 1/4 segment of a 60 pixel ring.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...