greeeg 460 Posted April 4, 2014 Author Share Posted April 4, 2014 Got my components, soldered up the first completed controller board. 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. 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. bluehash and RobG 2 Quote Link to post Share on other sites
bluehash 1,581 Posted April 5, 2014 Share Posted April 5, 2014 Nice! You did well on the photography part. greeeg 1 Quote Link to post Share on other sites
greeeg 460 Posted April 7, 2014 Author Share Posted April 7, 2014 Update for users that have requested controller boards. 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 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 bluehash, t0mpr1c3, abecedarian and 1 other 4 Quote Link to post Share on other sites
jrychter 14 Posted April 8, 2014 Share Posted April 8, 2014 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. Quote Link to post Share on other sites
greeeg 460 Posted April 8, 2014 Author Share Posted April 8, 2014 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 Quote Link to post Share on other sites
jrychter 14 Posted April 8, 2014 Share Posted April 8, 2014 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 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 Quote Link to post Share on other sites
greeeg 460 Posted April 11, 2014 Author Share Posted April 11, 2014 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. bluehash 1 Quote Link to post Share on other sites
greeeg 460 Posted April 12, 2014 Author Share Posted April 12, 2014 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.Looks fine once I had soldered and washed the board to remove flux residue. But let's look underneath.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 Quote Link to post Share on other sites
dpharris 13 Posted April 13, 2014 Share Posted April 13, 2014 Beauty! Quote Link to post Share on other sites
greeeg 460 Posted April 22, 2014 Author Share Posted April 22, 2014 an update. I've never encased a full electronics project in clear resin before, but thought it would make the ring look more professional. 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. It'll either be awesome, or a complete failure. dubnet, tripwire and GeekDoc 3 Quote Link to post Share on other sites
bluehash 1,581 Posted April 22, 2014 Share Posted April 22, 2014 Good luck! Courtesy. greeeg 1 Quote Link to post Share on other sites
igendel 27 Posted April 24, 2014 Share Posted April 24, 2014 @@greeeg, I just found a somewhat-similar project you can improve on... http://makerflux.com/laser-cut-and-arduino-compatible-led-crown/ Quote Link to post Share on other sites
greeeg 460 Posted April 25, 2014 Author Share Posted April 25, 2014 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. Quote Link to post Share on other sites
Fred 453 Posted April 25, 2014 Share Posted April 25, 2014 I thought of your clock when I saw that Neopixel ring. Perfect if someone wants to make a smaller simpler clock along the same lines as yours. Quote Link to post Share on other sites
greeeg 460 Posted April 25, 2014 Author Share Posted April 25, 2014 Positioning the LEDs like they do would be a pain to hand solder. I know that adafruit probably Pick 'n Place and reflow this board. I regret soldering the LEDs on my ring before the capacitors, I melted the edges of a few of the LEDs. :/ Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.