Show Posts
Pages: [1] 2 3 4
1  Using Arduino / General Electronics / Re: H Bridge Trouble on: March 16, 2014, 09:14:57 am
Thanks for the reply smiley

Here's the pic of the schematic: http://imgur.com/zun2dtD- the board layout is fine, I checked it thoroughly for shorts. I did swap out the IC, but the same thing happens. I think the problem might be in the microcontroller - perhaps I overheated it whilst soldering (I used paste and hot air) resulting in a couple of dead pins? That could explain the funny voltages on the inputs...

2  Using Arduino / General Electronics / H Bridge Trouble on: March 15, 2014, 10:47:32 pm
I recently built up a pcb with a bunch of H-brides, but there's an issue with one of the ICs - when I power it on, both the outputs are shorted to ground! When the power is off, there is no short, but with power, there's only about 2 ohms between the outputs and ground. Does anybody know what could be going on here?

Also, when I send a signal to one of  the inputs using an AVR, I read 3.6 volts on BOTH the inputs (I'm using a 5V VCC). On another chip that does work, I read a normal 5V on whichever input I turn on. I don't detect any shorts between the MCU pins.

Any help is appreciated smiley
3  Using Arduino / Programming Questions / How many clock cycles does this take? on: July 15, 2013, 06:53:17 pm
Before I start, here's the setup portion of my code:

Code:
void setup()
{
  LCD.begin(16, 2);
  LCD.clear();
  LCD.blink();
  LCD.home();
  LCD.print("Set time:        ");
   
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
  pinMode(buttonPin, INPUT);
 
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
 
 
  while(1)
  {
    boolean reading = digitalRead(buttonPin);
   
    if(reading == HIGH)
    {
      pressedConfidenceLevel++;
      pressedConfidenceLevel2++;
      releasedConfidenceLevel = 0;
      releasedConfidenceLevel2 = 0;
           
      if(pressedConfidenceLevel >= 500)
      {
        if(previousState == LOW)
        {
            time++;
           
            if(time >=720)
              time = 0;
             
            hour = time/60;
            hour1 = hour/10;
            hour2 = hour%10;
           
            minutes = time%60;
            digit1 = minutes/10;
            digit2 = minutes%10;
           
            if(hour1+hour2 == 0)
            {
              hour1 = 1;
              hour2 = 2;
            }
           
            LCD.setCursor(0, 1);
            LCD.print(hour1);
            LCD.print(hour2);
            LCD.print(":");
            LCD.print(digit1);
            LCD.print(digit2);
           
            if(time > 0)
              shift1();
            else
            {
              shift1();
              shiftBack();
            }
           
            previousState = HIGH; 
         
          } 
       
       
          pressedConfidenceLevel = 0;
       }
       
       if(pressedConfidenceLevel2 >= 200000)
       {
          while(reading == HIGH)
          {           
            time++;
           
           
                       
            if(time >=720)
              time = 0;
             
            hour = time/60;
            hour1 = hour/10;
            hour2 = hour%10;
           
            minutes = time%60;
            digit1 = minutes/10;
            digit2 = minutes%10;
           
            if(hour1+hour2 == 0)
            {
              hour1 = 1;
              hour2 = 2;
            }
           
            LCD.setCursor(0, 1);
            LCD.print(hour1);
            LCD.print(hour2);
            LCD.print(":");
            LCD.print(digit1);
            LCD.print(digit2);
           
            if(time > 0)
              shift1();
            else
            {
              shift1();
              shiftBack();
            }
           
            reading = digitalRead(buttonPin);         
         
         
            previousState = HIGH;
          }
       }
     }
   
   
   
    else
    {
      releasedConfidenceLevel++;
      releasedConfidenceLevel2++;
      pressedConfidenceLevel = 0;
      pressedConfidenceLevel2 = 0;
     
      if(releasedConfidenceLevel >= 500)
      {
        previousState = LOW;
        releasedConfidenceLevel = 0;
       
      }
     
      if(releasedConfidenceLevel2 >= 1000000)
      {
        previousState = LOW;
        releasedConfidenceLevel2 = 0;
        LCD.clear();
        LCD.home();
        LCD.print("Starting in:     ");
       
        for(int x = 5; x >0; x--)
        {
          LCD.setCursor(0, 1);
          LCD.print(x);
          delay(1000);
        }
       
        LCD.clear();
        LCD.home();
        LCD.print("My clock");
        LCD.setCursor(0, 1);
        LCD.print(hour1);
        LCD.print(hour2);
        LCD.print(":");
        LCD.print(digit1);
        LCD.print(digit2);
        break;
      }
    }

 

}
}

Okay, now here's my question: how many clock cycles would it take for pressedConfidenceLevel or releasedConfidenceLevel to increment? For example, a value of 500 is 'long enough' to debounce the button but 'short enough' to seem instantaneous, whereas a value of 1000000 is noticeably long. How can I translate that number to number of clock cycles (and therefore actual time)?
4  Using Arduino / General Electronics / Need a hot air station? Check out this review. on: April 02, 2013, 07:09:16 am
One of the cheapest hot air rework stations out there is the Atten 858D+. For $50, it's hard to beat smiley-razz

I made a really quick pros/cons video reviewing it, check it out! It might help.

5  Using Arduino / General Electronics / Re: Playing with DC motors on: March 30, 2013, 10:08:34 am
Check this out, it's one of the most common motor driver ICs out there  smiley

6  Using Arduino / Project Guidance / Re: Arduino based PCB - layout, crystal and planes on: March 30, 2013, 10:06:50 am
On a side note, you need a good place to get these manufactured! I used seeedstudio for mine, and the boards came out pretty decent, especially for the price (although silkscreen wasn't amazing).

I've reviewed the service here, check it out:
7  Using Arduino / General Electronics / Re: Where I got my PCBs made on: January 02, 2013, 07:50:47 pm
I'm thinking of using OSHPark for my TQFP breakout board, as it's 6x3 cm about, and that's an extra $15 from Seeed (because it's longer than 5 on one side). Plus, with the panelising of the boards in OSHPark, less space is wasted (more eco-friendly smiley )

Quote
The huge benefit of OSH Park is that all boards have a gold-plated finish and a sweet purple silkscreen

Haha I think you mean purple soldermask! Silkscreen is the text. Seeed doesn't even have a purple option - it's an extra $10 for blue, red, yellow or white, and an extra $20 for black! The ENIG gold plated finish is an extra $10 I think as well...

However the custom soldermask charges are somewhat cheaper than other manufacturers. Most places (like Gold Phoenix PCB) charge at least an extra $20 for this.
8  Using Arduino / General Electronics / Re: Arduino DUE Schematic Questions on: January 02, 2013, 04:30:48 am
The inductors are there (I believe) to prevent back-EMF. They're not strictly necessary, but it's good practice to add them in anyway. Capacitors C9 and C10 are bypass/decoupling capacitors, and again, whilst your circuit probably still will function without them, they prevent electrical noise and ensure that sensitive ICs that don't like voltage ripples function properly smiley-razz. In order for them to work properly, they need to be placed as close to the IC they're for as possible. I haven't thoroughly read the schematic, but I think C2 and C3 are for the power supply, to prevent voltage spikes and sudden drops. Note that they are polarized.

I'm not sure about the rest though. D1 confuses me. If it is a protection diode, shouldn't it be the other way round? Anyway, good luck on your board! If you need a place to get them made, Seeed studio were pretty good in my opinion (cheap, fast, decent quality). Check out my video review if you're interested:
9  Using Arduino / General Electronics / Where I got my PCBs made on: January 02, 2013, 04:14:39 am
As a hobbyist, I spent hours searching for a cheap place to get my boards manufactured. I searched everywhere until I came across the "Fusion PCB service" by Seeed studio. This place was ridiculously cheap ($35 for 10 boards, shipped) and they came in just under 2 weeks. I made a video review of the service, where I go into the board quality. This might help anybody looking to get their boards made so enjoy smiley



If you liked it, subscribe for more reviews and tutorials! I even have an Arduino tutorial playlist!
10  Community / Exhibition / Gallery / Designing a product on: December 29, 2012, 09:59:08 am
I've just started a video series on electronics product design! This might be useful to anybody who has that special idea, but needs help acting on it. I use an AVR robotics board as an example (so it's quite relevant to Arduino), and I plan to document it right through from start to finish!

Part 1 is here:


Part 2 is coming soon, just waiting on some MCUs from Atmel smiley
Subscribe to me on YouTube to follow it! I also have quite a few Arduino tutorials, as well as just regular electronics tutorials (soldering, PCBs, etc.) so check out my channel!
11  Using Arduino / General Electronics / Re: Motor Driver Question on: December 24, 2012, 07:29:35 pm
Thanks a lot, I thought as much!

The datasheet implied this from the first figure, but as you said it shows paralleled inputs on fig 6 (cbb to read it all...)
12  Using Arduino / General Electronics / Motor Driver Question on: December 24, 2012, 04:05:38 am
Hi all!

I have a question regarding motor drivers. The specific one I'm using is the Allegro A3901, but this should apply to most drivers (like the L298). The question is, If I wanted to connect a single motor with paralleled outputs (see image: http://imgur.com/XGHU2), would it be possible to connect IN1/IN3 together, and IN2/IN4 together? The recommended schematic shows all four inputs being connected to individual MCU pins, but I feel this is a waste! Also, is there any advantage of connecting the motor like this? Can it draw more current this way as opposed to just connecting it to OUT1 and OUT2 and leaving OUT3/OUT4 unconnected?

Thanks!
13  Using Arduino / Installation & Troubleshooting / Re: can't use arduino as isp on: December 19, 2012, 09:33:58 am
I've messed around with the fuses on the 168, but the 328s have the bootloader burnt. Nothing changes when I add a 16MHz crystal though...
14  Using Arduino / Installation & Troubleshooting / can't use arduino as isp on: December 19, 2012, 09:20:15 am
Hi all!

I've run into a really weird problem recently:

Normally, I use my arduino uno r3 as an isp to program my other AVR chips (usually an attiny84) but for some reason, I can't program an atmega168 or an atmega328!

I keep getting an invalid device signature (usually either all 0s or all Fs, but sometimes a combination). My connections are fine, I checked them a hundred times, and when I rewire it to the attiny84, everything's alright. It just won't work with the 168 or 328 though. I've even tried 2 different 328 chips. Does anybody know what could be happening here?

Thanks!
15  Using Arduino / General Electronics / Battery Question on: December 18, 2012, 08:26:04 am
I'm planning on building a lithium battery charger, but I've hit my first problem! I want to charge a 2 cell pack, but I want to charge each cell individually (so the cells are balanced). How would I do this? Yes, I know there are dual cell charge ICs out there, but is there a way to use two single cell charging chips? Would something like this work?

http://imgur.com/dSPxY
Pages: [1] 2 3 4