LED Poi w/ 9DOF Questions/Guidance

Status
Not open for further replies.

IronSights87

New member
Go ahead and delete this.

No, really, delete this thread as soon as you see this (To any mods)
 

Attachments

  • Lx7bDzW.jpg
    Lx7bDzW.jpg
    56.2 KB · Views: 458
Last edited:
for lipo cylinder cells look on amazon: 18650 and 14500 - both 3.7v one larger (2000+mAh), one is "AA" sized package (800+mAh). Many show false specs on mAh and may be counterfeit. BatteryJunction.com may be a more reputable source I'd bought from. The picture I see looks to be the 18650 cell.

You can get spring holders or through hole solder clips for either - I saw them on Sparkfun.

I have bought from onehorse and his stuff looks good and what I've tried went well with his 9DOF, but I've spent too little time using it so far. Doing two cells in parallel worries me in that both won't charge perfectly, that might be okay in short term if you can cycle them out for proper full charging on some regular basis. Using in series would prevent effective 'onboard' charging at all - and you couldn't use the onehorse unit. The Teensy needs only 3.3v, but if you step up to 5v that is another factor.

My situation is all to similar to yours - my time and attention keep getting short of my desired exuberance.
 
This LiPo battery charger is limited to 100 mAH from USB and 280 mAH from the DC input. I am working on a newer LiPo battery charger which should allow 1 AH charge rates from DC in.
 
I've not programmed APA102's (Adafruit Dotstars) but I have programmed WS2812's (Adafruit neopixels), where voltage conversion is a problem.

Now, WS2812's can actually run at 3.5-5.5v, and there are several different ways to power the LEDs:
  • Using 3.7v li-pos/18650 batteries connected to VIN and to the LEDs, you don't need level conversions, as the 3.3v that the Teensy uses is close enough to the 3.7-4.2v that the battery produces. You will might problems if you power the LEDs with USB (for example when programming the Teensy), since some LEDs will not work when the power is 5v and the data signal is 3.3v. You can cut the trace between VIN and VUSB, which would mean you would have to have the battery on when programming the Teensy (or just ignore random errors when programming, and unplug the cable to actually try things out). However, APA102's might be stricter than WS2812's and you might not be able to light them properly with 3.7v.
  • If your entire LED string can be powered from the Teensy 3.3v bus, you can power the Teensy however you want and not do level conversion. However, if you do it this way, you are running the LEDs under-spec (so far, all of the WS2812's that I have will work with 3.3v). You also have to be careful to limit the power to the LEDs. I did some back of the envelope calculations, and for 32 LEDs, if I kept the max power level of any LED to under 30 per LED (sum of red, green, and blue power levels), the whole LED string would draw about 75mA which works well with the Teensy. However, you want double the number of LEDs, so I'm not sure is having the max power would work for your application.
  • Using the Teensy-LC, you have one pin (A3/17) that has a level converted output that can be used, and you can use VIN for the output. However for APA102's that isn't feasible, since you need two wires converted. If you were to switch to WS2812's, note that the speed that you can drive the LEDs is fixed and it isn't quite fast enough for POV type builds (APA102's are faster, and can be used for POV).
  • Add explicit voltage level conversion. There are other current discussions about level conversion at this site, so you might want to look it up (the typical i2c converter that you can find lots of places has problems with high speed lights). In general for LED projects the 74LVC245 seems to be the best. but the through hole version is 20 (2x10) pin, if size is a consideration. For converting up to 4 lines, I like the level converter from pololu (2x5 through hole): https://www.pololu.com/product/2595
 
Last edited:
For converting up to 4 lines, I like the level converter from pololu (2x5 through hole): https://www.pololu.com/product/2595

This seems to be a standard resistor + FET network which is not really appropriate for fast signals, especially I2C. Here is a better solution for I2C, which needs the bidirectionality. If you have unidirectional signals, the 74LVC245 is probably best.
 
I would recommend separate LED and Teensy power supplies; but both will be connected by a control data line which might need logic level (3V3 to/from 5V) conversion IIUC.
 
We have POV poi stage performance kit built on the same principles, and have been using them for a couple of years now. If I were starting now, I would be using APA102 you and Michael pointed out. We run from 4 AAA 1.2V rechargables that are high mAh output. These run both the leds and the Teensy using the Vin. They add weight, but this is at the end close to the hand, with the advantage of being swapped in/out if doing a series of sets.
 
If you are running hundreds of LEDs you probably need multiple power supplies to the LEDs, but you should be able to power the Teensy from the power supply to one set of LEDs. What you don't want to do is put the main power on the Teensy and then power the LEDs from that power supply. Instead, you feed both the LEDs and Teensy from the same power supply, applying the power to the VIN/ground pins. You probably do want to cut the solder jumper between VIN and VUSB, so that when you are programming the Teensy, it uses power from the power supply and not USB.

If you are running 64 LEDs, you might be able to power the LEDs from the Teensy, but it would be better to use a power supply where both the LEDs and Teensy are supplied directly from the power supply.

If you have a large scale installation where you have multiple power supplies, make sure the grounds of each power supply are connected to each other.
 
Ok, let me try to be clearer.

You can power a Teensy by
  • 5v via USB. If you have not cut the solder jumper from VIN to VUSB you can draw about 500mA (3.0/3.1) or 350mA (LC) via the VIN pin if you are powering the Teensy via USB;
  • 3.7-5.5v via the VIN pin. If you have cut the jumper from VIN to VUSB, you must provide power on VIN when programming the Teensy;
  • Regulated 3.3v power to one of the two 3.3v pins.

No mater how you power the Teensy, the digital data pins will emit 3.3v when you do a digitalWrite function call. Some pins cannot be used for digitalWrite, and can only be used for analogRead. I don't recall off hand how many micro amps you can pull off of a data pin on the 3.1. On the LC, it is 5mA for most pins, and 20mA for 4 pins.

On the 3.1 and LC, the DAC pin can emit voltage between 0 and 3.3v using analogWrite (it may be possible to reduce the max. voltage of the DAC below 3.3v). You would not typically use the DAC pin for WS2812 or APA102 LEDs.

On the Teensy 3.0 you can draw about 155mA of total power from the 3.3v pin. On the Teensy 3.1 this is about 185mA, and on the LC it is about 120mA. While those are the limits in the datasheet, in the past Paul has recommended that you never draw more than 100mA for any of the Teensys. Hence when I'm doing WS2812's for costumes, I limit the total power to about 75mA, so that I can power it via the 3.3v pin.

For LED strings, if you are powering the LEDs via a 5v source, the problem is the LED microprocessor might not notice the transition from 0-3.3v as being high. Some will work with 3.3v, some will not. As I mentioned, I have a variety of neopixels from Adafruit, and the older ones have no problems with 3.3v data signals using 5v sources. The newer LEDS tend to be pickier and I have to do level shifting if I'm powering the neopixels via 5v USB power. If I power the Teensy via a 3.7v lipo battery, all neopixels will work correctly (and when I hook up the 5v USB to program the neopixel, some things will not work, and I need to unplug the Teensy from USB to see if things are working correctly). So, I would plan on having to do level shifting. As I mentioned for neopixel work (but not APA102), the LC is interesting because it has a free level shifter. But for APA102 work, you need to think of level shifting, and the 74HCT245 is the preferred level shifter.

As an alternative, I have at times thought about using a 5v processor (Polo A-star, Squarewear, or Adafruit Trinket/Trinket-Pro), but I usually keep coming back to the Teensy.
 
Last edited:
So I take it the 4 AAA's are run in series to get 4.8v? Just wondering because I didn't think the APA102 (assuming thats what you have) would run on such low volts.
to clarify, these are the leds that i would use now, if setting out again. I have not tested these yet. I did test 144led/m ws2812 which ran for 30-40mins on a charge. These are rated at 20mA per colour, so 60 at full pelt, but you never run them at full white spinning, and so this figure is over spec for graphic poi. (btw, as you know, forget ws2812 for pov). You will just have to see with Michael's suggestions on bumping up the V.
 
As noted in Msg# 12: 4 rechargeable AA/AAA's are 4.8 volts - primary Alkaline type would give you 6 volts. AA's larger but more than double the stored MAh of AAA if you need that.
 
Well, Sparkfun (and Adafruit) have excellent tutorials on how to connect the LSM9DS0 breakout to an Arduino from which you ought to be able to translate to the Teensy.

If you are using the Teensy 3.1, I would strongly recommend you use i2c_t3.h; you'll save yourself all kinds of trouble. Here is a sketch that initializes and spews the data to serial for the LSM9DS0 written specifically for the Teensy 3.1. It even has open-source sensor fusion for absolute orientation. You can adapt it to your needs.
 
OK

Connect the LSM9DS0 VIN to 3V3 on the Teensy (tht's two pins over from the Teensy VIN). Connect GND on the LSMDS0 to GND on the Teensy, the first pin to the left of the USB nearest Teensy pin 0. Do not use AGND. Connect LSM9DS0 SDA to Teensy pin 18 and connect LSM9DS0 SCL to Teensy pin 19. The default LSM9DS0 XM I2C address is 0x49 IIRC, so you need to decide if you are going to pull ADO HIGH or LOW. That is, you need to decide what the least significant bit (LSB) of the LSM9DS0 I2C address is going to be. User's choice! Run an I2C scan to see if you can detect any I2C devices on the Teensy I2C bus. You initialize I2C with Wire.begin();. All of this should be in the Adafruit tutorial.

I love Adafruit. My only complaint (this goes for Sparkfun too) is that their sketches are often poorly commented, incomplete, and difficult to modify. I prefer eating my own cooking in this regard.

Just looked at you pictures. Is the Teensy soldered to the machine pin headers??? You cannot just lay them gently on top of the headers and expect anything to happen, because nothing will.
 
Last edited:
I'm curious how you're thinking of integrating the motion sensing into the LEDs for spinning Poi?

A good number of people have asked me for LED Poi examples. Still considering what (if anything) I might put together to publish....
 
the teensy pov poi I have use a simple single pin button set up to scroll through the modes using a 'while' and button count with debounce. This has drawbacks in that you need to go incrementally through the modes to get to the one you want, but is pretty robust. For performances there is a sinlge hit sketch that goes through a list of functions/patterns. The single button set up works well if the mode has a short looping time as I am not using any form of polling during a function.
 
I'm working on something similar: Teensy 3.1, LSM9DS0 motion sensor, 12 14500 Li-Ion cells, 90 Watts of UBECs powering 800 LEDs as four parallel strips of 200 APA102 LEDs.

Progress as of this week:
First spin 20150712_181937 scaled.jpg

Given previous experience with NeoPixel strips, I like to make absolutely bloody certain that the power demand of the strips can't brown out the Teensy. Hence different DC-DC converters for the Teensy and the strips.

For the motion control, I'm just detecting spins, rolls, and holds in particular positions. Those signals then trigger particular modes. I'd like to get pattern generation linked to spin speed, but that's a stretch goal for now. Current issue is the Adafruit_Dotstar library being particularly slow to update the LEDs (like 5.7 ms for 200), next step is to update my code to use FastLED.
 
Last edited:
For the motion control, I'm just detecting spins, rolls, and holds in particular positions.

Not sure exactly what a ROLL is?

But I pictured other effects?
> Vertical and Horizontal CURTAIN - an outstretched are up/down or side to side.
> Hold out an arm and rotate your body (until you got dizzy - recommend rotating the opposite direction to fix your ears before stopping)
 
Not sure exactly what a ROLL is?

But I pictured other effects?
> Vertical and Horizontal CURTAIN - an outstretched are up/down or side to side.
> Hold out an arm and rotate your body (until you got dizzy - recommend rotating the opposite direction to fix your ears before stopping)

And how is this supposed to help me? Why are you asking questions to someone who posted a similar project on my thread? That's not helping and honestly doing nothing but getting in the way. I'm sitting here expecting sound advice from people who know what they're talking about (See previous posts from people who actually helped) but I get indirect questions to other people sharing similar projects? Please, if it doesn't pertain to what I'm asking, keep it to yourself. I don't need anymore random clutter. I only post here because I'm in need of assistance and to see some random message that has NOTHING to do with the entire previous post is just frustrating.
 
And how is this supposed to help me? Why are you asking questions to someone who posted a similar project on my thread? That's not helping and honestly doing nothing but getting in the way. I'm sitting here expecting sound advice from people who know what they're talking about (See previous posts from people who actually helped) but I get indirect questions to other people sharing similar projects? Please, if it doesn't pertain to what I'm asking, keep it to yourself. I don't need anymore random clutter. I only post here because I'm in need of assistance and to see some random message that has NOTHING to do with the entire previous post is just frustrating.

Wow!

I was going to take some of my valuable time and offer free advice but if you come "here expecting sound advice from people who know what they're talking about" without the least courtesy and grace I think I'll spend my time elsewhere...
 
This LiPo battery charger is limited to 100 mAH from USB and 280 mAH from the DC input. I am working on a newer LiPo battery charger which should allow 1 AH charge rates from DC in.
one horse, whats the progress on the new high rate lipo charger?
Oh dear, just made another non-helpful response… sorry about that.
 
Status
Not open for further replies.
Back
Top