Show Posts
Pages: [1]
1  Using Arduino / Motors, Mechanics, and Power / Re: EasyDriver v4.3 and sparkfun Stepper motor woes on: March 13, 2013, 01:54:43 pm
I had the same exact problem.  Did you ever figure it out?  My motor works when directly attached to the Arduino, running the example code from Schmalzhous...Thanks!

Austin
2  Topics / Science and Measurement / Re: Thermocouples, MAX31855 ADC and Uno Problems on: August 19, 2012, 05:36:39 pm
So the data should only be coming from one chip at a time.  I call getTemp(*) for CH1-CH9 in order, and since the Chip Select (CS) pins for each chip come from a separate pin on the Uno, I should be able to call for data from each chip individually.  If I call getTemp(CH1), the CS pin for chip 1 receives a signal, sending temperature data to the SO data bus.  During this loop, any data that comes to the Uno should only be from that chip.  Does that make sense? 

As for the decoupling caps, I initially thought the same thing as you, but I based my design on the other *.brd file in my first post.  I also emailed Ryan Mclaughlin, who has designed breakout boards for the MAX chips, and made sure I wasn't missing a connection to ground.  He said I wasn't.  Do you think he is incorrect?  Thanks.

Austin
3  Topics / Science and Measurement / Re: Thermocouples, MAX31855 ADC and Uno Problems on: August 18, 2012, 02:51:41 pm
Sorry, I was referring to decoupling caps
4  Topics / Science and Measurement / Re: Thermocouples, MAX31855 ADC and Uno Problems on: August 18, 2012, 02:40:29 pm
Thanks for the replies.  Here is the relevant portion of the code:
...
float getTemp(int ch)  {
   unsigned long value = 0;
   float temp = 0;
   char bita;
   digitalWrite(ch, 0);         //Switch to low (active)
   for (int i = 0; i < 32; i++) //Get 32 bits from the MAX31855 - see datasheet for specifics. 
     { digitalWrite(mClockPin, 1);     //set clock pin low
       bita = digitalRead(mDataPin);
       if (bita==1) value = value | 1; //If bit ==1 set lowest bit in value
       digitalWrite(mClockPin, 0);     //Set clock pin back to high
       if (i != 31) value = value << 1;// If we're not done yet, shift bits left by 1 to make room for next loop
     }
   digitalWrite(ch, 1);
   value = value >> 18; //shift out all but tc temp data and sign bit
   temp = (((value * 0.25) * 9) / 5) + 32; //Convert to Degrees F
   return temp;
}

The code utilizes a continuous loop that calls 'getTemp' for each of the thermocouple channels (1-9 in this case).  When getTemp(CH1) is called, for example, the CS line is set to low (active) and the data pin (SO) is read.  32 bits are pulled from the data bus before the temperature is returned, and the loop moves on to executing getTemp for the next channel (CH2).

As you can see, data should only be coming from one MAX31855 at a time, but when analyzing the circuit I was seeing signals from, say, CH2 when executing getTemp(CH1)!  This was why I tried using a Schmitt trigger, but it did not work.  I may have chosen the incorrect trigger though, so any advice there would be helpful! 

To johnwasser, I'm not sure what you're referring to as un-routed traces, but any trace that ends in a green circle is going to a pin (either to the Uno or the MAX31855).  The caps are open on one end because they are floating caps.  I was told this acts as a frequency filter for the incoming voltage from the Uno.  Is this incorrect?  Thanks for your reply.

Austin
5  Topics / Science and Measurement / Thermocouples, MAX31855 ADC and Uno Problems on: August 13, 2012, 01:44:35 pm
I have multiple thermocouples (TCs) going to MAX31855 ADCs (1 per TC), which all connect to a common SO bus going to an Uno.  The schematic is attached.  The setup works fine for a single TC, but all output readings go to zero when hooked up in series.  There is a common voltage bus (5V from Uno --> 3.3V using resistors), GND bus, clock (CLK) and serial output (SO) bus.  The chip select (CS) pins all go to separate pins on the Uno. 

At first I thought I was experiencing a loading problem, but after testing I found I was not.  If I have one TC/ADC running and 2nd TC/ADC hooked up except for the clock line, the 1st TC reads fine, but as soon as I attach the 2nd CLK pin the outputs both go to zero.  I essentially followed the same setup as shown in my second attachment (TC_Quad_Interface...).  I've tried using a Schmitt trigger, but that failed.  Any other ideas or advice would be much appreciated!

Austin
Pages: [1]