Show Posts
Pages: [1] 2 3
1  Using Arduino / General Electronics / Re: PCB short circuits on: May 07, 2013, 06:00:57 pm
I put this project on the back burner for a little while so I could try to learn more about electronics. I did learn a little. I make my living as an artist, so making things of all kinds holds my interest. Making my own PCBs is now on my gonna-try-that list. The small machines for which these PCBs are intended are nearly completed. I'm anxious to put them to work, as they will allow me to do things I can't right now. These PCBs are all that's left after I do some final sanding.

I have a double sided copper clad board on it's way in case I need to replace the two boards with burned traces. The first PCB I made works. Another has 4 repairs, and doesn't work, a third has 1 unrepaired trace, and doesn't work, and the last hasn't been tested yet.  All are still assembled with components soldered in place.

I wish I knew someone close by who was good with these things. It's easier to learn directly from a person with whom a conversation in real time can be made.  I'm wondering if I should desolder these two faulty boards to try to isolate the problem?

These are the directions I followed:  http://www.dreamingrobots.com/ElectricEelWheel/BuildersGuideElectronics_v1200/

These are the custom boards I ordered:  https://www.batchpcb.com/pcbs/102800

Images of Eagle board, and schematic:




Eagle files attached

Thanks so much, you all.

There's so much here to digest, it's hard to know where to start. Maybe what would help most at this point is for someone to sort of take me step by step through the process of learning what's going on with these boards of mine.

I have a box of salvaged PCBs, mostly from several laser printers I deconstructed, from which I want to reclaim the components. There are many dozens of boards; large, and small. I can't afford a solder pot, have considered making one with a 3" cast iron skillet on a portable electrical burner, or using a heat gun; I'm not really sold on the solder suckers I've seen. That in mind, I could buy / make whatever to use to remove these components, but do I remove them all at once, or one at a time? I'd also be interested in hearing your recommendations for a desoldering tool. Thanks again.

Peace,

Dave

PS: I appreciate this demo on repairing burned traces:


Any thoughts?
2  Using Arduino / General Electronics / Re: PCB short circuits on: April 13, 2013, 04:26:40 pm
Thanks, all! I kept waiting to get an email telling me a new post had been made. When I didn't, I assumed there weren't any. Thanks very much for your excellent responses.

I have a multi-meter, and in checking circuits on my PCB, I found that there was no continuity in one of three 10K resisters. I'll pick one up at Radio Shack in a bit. I was wondering, though,
  • could that alone be the reasons for the shorts
  • could that alone be responsible for no power to the motor?
3  Using Arduino / General Electronics / PCB short circuits on: April 07, 2013, 01:11:33 pm
Hello,

Using plans I found on-line, I built a PCB DC motor controller from scratch. Then, I ordered parts to make 3 more. When I connect power to one of the later 3, a small wisp of smoke rises, and a bright line appears on the PCB surface as a trace burns out. So far, I have made 3 repairs with another yet to make. My question is to know how to find out which component is causing the shorts? I have a multi-meter, but I really don't know how to use it very well. Is there a very thorough tutorial that might help?

Peace,

Dave
4  Using Arduino / Installation & Troubleshooting / Re: Problems with Uploading a Sketch on: March 31, 2013, 08:37:47 pm
Thanks for the excellent post; problem solved. Yes, my Arduino is self-made a clone. I have an ATMega168 with no bootloader, and that seems to have been mixed in with the ATMega328s that do have the bootloader. The bigger problem was that I missed a contact when I soldered the socket into place. Once that was soldered, the ATMega328s were simple to load with my sketch. Thanks very much for your help, all of you.

Peace,

Dave
5  Using Arduino / Installation & Troubleshooting / Re: Problems with Uploading a Sketch on: March 31, 2013, 07:17:34 pm

Is the device insertion sound generated?

Yes

Quote
Does the Arduino appear in Device Manager under Ports?

Prolific USB-to-Serial Comm Port (COM5); no ports heading appeared until the Arduino was connected. After the device insertion sound, then the Proli<snip>OM5) appeared under Ports. When I last checked, it stays under the Ports heading until reboot.

Quote
What is the exact error message?

Quote
Done uploading
Binary sketch size: 1,084 bytes (of a 32,256 byte maximum)
avrdude: stk500_getsync(): not in sync: resp=0x30

Thank you
6  Using Arduino / Installation & Troubleshooting / Re: Problems with Uploading a Sketch on: March 28, 2013, 09:55:29 pm
Pass
7  Using Arduino / Installation & Troubleshooting / Re: Problems with Uploading a Sketch on: March 28, 2013, 01:31:46 am
Good thought, It's set for Arduino UNO, which is correct.
8  Using Arduino / Installation & Troubleshooting / Re: Problems with Uploading a Sketch on: March 28, 2013, 01:28:17 am
Okay; same result with a USB cable that is working.
9  Using Arduino / Installation & Troubleshooting / Re: Problems with Uploading a Sketch on: March 28, 2013, 12:54:19 am
Thank you again; I appreciate the help.

I followed the procedure exactly, but - drat - there is no blinking on the Arduino board, and I get this readout:

Done uploading
Binary sketch size: 1,084 bytes (of a 32,256 byte maximum)
avrdude: stk500_getsync(): not in sync: resp=0x30

I don't know much about what that means, but "not in sync" doesn't sound good.
10  Using Arduino / Installation & Troubleshooting / Re: Problems with Uploading a Sketch on: March 27, 2013, 04:58:15 am
Good question. I'd have thought so, too. The first time I used Arduino a few weeks ago, there was no "Ports" heading in my device manager. Installing the Arduino drivers made Ports appear in device manager. It didn't disappear when I disconnected the USB cable from my computer, but when I rebooted, it was gone. Reconnecting the UNO to my machine brought the ports heading back.
11  Using Arduino / Installation & Troubleshooting / Problems with Uploading a Sketch [solved] on: March 26, 2013, 07:48:30 pm
Hello

I read another thread that ended on 03/10 in which the OP found that by re-soldering two joints his issue was solved. I'm using an Arduino UNO to install the sketch I'm getting messages I'm not understanding. Several weeks ago, I didn't have any trouble uploading the same sketch to another ATMega 328 with bootloader from  from Sparkfun. These last two days have been unhelpful in so far as getting my sketch uploaded.

My Arduino was set to COM4 when I opened it later, and again today. I was getting this message:

Quote
Serial Port COM4 already in use. Try quitting any programs that may be using it.

And then this appears in the window:

Quote
Binary sketch size: 2,748 bytes (of a 32,256 byte maximum)
processing.app.SerialException: Serial port 'COM4' already in use. Try quiting any programs that may be using it.
   at processing.app.Serial.<init>(Serial.java:171)
   at processing.app.Serial.<init>(Serial.java:77)
   at processing.app.debug.Uploader.flushSerialBuffer(Uploader.java:77)
   at processing.app.debug.AvrdudeUploader.uploadViaBootloader(AvrdudeUploader.java:174)
   at processing.app.debug.AvrdudeUploader.uploadUsingPreferences(AvrdudeUploader.java:67)
   at processing.app.Sketch.upload(Sketch.java:1671)
   at processing.app.Sketch.exportApplet(Sketch.java:1627)
   at processing.app.Sketch.exportApplet(Sketch.java:1599)
   at processing.app.Editor$DefaultExportHandler.run(Editor.java:2380)
   at java.lang.Thread.run(Thread.java:619)
processing.app.debug.RunnerException: Serial port 'COM4' already in use. Try quiting any programs that may be using it.
   at processing.app.debug.Uploader.flushSerialBuffer(Uploader.java:101)
   at processing.app.debug.AvrdudeUploader.uploadViaBootloader(AvrdudeUploader.java:174)
   at processing.app.debug.AvrdudeUploader.uploadUsingPreferences(AvrdudeUploader.java:67)
   at processing.app.Sketch.upload(Sketch.java:1671)
   at processing.app.Sketch.exportApplet(Sketch.java:1627)
   at processing.app.Sketch.exportApplet(Sketch.java:1599)
   at processing.app.Editor$DefaultExportHandler.run(Editor.java:2380)
   at java.lang.Thread.run(Thread.java:619)

"Okay, well, now what" I asked myself.  Then, when I reset Arduino 1.0.3 to COM3. I receive this:

Done Uploading
Binary sketch size: 2,748 bytes (of a 32,256 byte maximum)
avrdude: stk500_getsync(): not in sync: resp=0x30

I've tried with Blink, too.  I could upload both Blink, and my custom sketch to the first chip several weeks ago, but I have 4 more here that can't, although Blink did upload to one of the chips. Uno's LED is flashing on and off in 2 second cycles. I'm powering the UNO through the USB.

Thanks for your assistance.

Peace,

Dave


ETA:

There is one port listed in my device manager:

Quote
Prolific USB-to-Serial Comm Port (COM4)
12  Using Arduino / Project Guidance / Re: Arduino, and Mechanical Movement of Objects - a Newbie Question on: February 10, 2013, 06:43:42 am
You folks are awesome-fantastic-brilliant-and-generous! Thanks for all these ideas. The one I think is most elegant is also probably the lease accessible to me, that being the rod with spiraling, machined grooves. In addition to finding someone to do the machining at a price I could afford, that one poses another thing to figure out. Splitting even one ball of yarn creates a couple of grams of lint. Lint, and grease don't play well together; they make a sticky mess.

I'm leaning toward some variation of the threaded rod. Parts are cheap, and ubiquitous, If I mess up, or make some revision, I'll still have more to have at it again. The threaded rod  presents the same grease/lint issue, and I haven't resolved that.

I don't know if you noticed, but in the video, there's a dangling gadget that looks like a toilet paper holder holding a ball of yarn, and it's rotating. It rotates to remove some varying amount of twist in the yarn, but I've been stopping to spin it manually every 15 or 20 seconds. There's now a little 12v. DC motor up there. One problem is that I need a 4" or larger pulley above the yarn ball holder, but I'm wondering if there's a way to edit the sketch so that I can adjust it as needed more easily than I can now. It seems to reach maximum RPMs well before the potentiometer reaches it's extreme. That sketch follows.

Code:
#include <EEPROM.h>

// Maurice Ribble
// 2-4-2010
// http://www.glacialwanderer.com/hobbyrobotics
// Open Source, licensed under a Creative Commons Attribution 3.0 License (http://creativecommons.org/licenses/by-sa/3.0/)
// Compiled with Arduino Software 0017 (http://arduino.cc)

// This program reads an input potentiometer and uses that value to set a motor controller's direction and speed.

// REVISIONS:
// Initial Version

// Frequency for updating motor
#define UPDATE_HZ   100

// Define digital/analog pins
#define BUTTON_PIN        2
#define MOTOR_ENABLE_PIN  3
#define MOTOR_IN1_PIN     4
#define MOTOR_IN2_PIN     5

#define DIAL_APIN         0

// Positions that different data is stored in eeprom
#define EEPROM_DIAL_LOW  0
#define EEPROM_DIAL_MID  1
#define EEPROM_DIAL_HIGH 2

enum { BUTTON_PRESSED=0, BUTTON_NOT_PRESSED=1 };

// Globals
unsigned long g_dialLow;
unsigned long g_dialMid;
unsigned long g_dialHigh;

void setup()
{
  int button;

  //Serial.begin(9600); // open hw serial for debugging

  pinMode(BUTTON_PIN, INPUT);
  pinMode(MOTOR_ENABLE_PIN, OUTPUT);
  pinMode(MOTOR_IN1_PIN, OUTPUT);
  pinMode(MOTOR_IN2_PIN, OUTPUT);

  // Default values 
  digitalWrite(MOTOR_ENABLE_PIN, LOW);
  digitalWrite(MOTOR_IN1_PIN, LOW);
  digitalWrite(MOTOR_IN2_PIN, LOW);

  button = digitalRead(BUTTON_PIN);
 
  // If the button is pressed during startup enter a special mode to set the min, max and mid dial readings
  // Should only need to do this once (unless you change the the potentiometer is changed)
  if (button == BUTTON_PRESSED)
  {
    waitTillAllButtonsReleased();                   // debounce
    g_dialLow = analogRead(DIAL_APIN);              // save low speed position
   
    button = digitalRead(BUTTON_PIN);               // wait for button to be pressed again
    while(button == BUTTON_NOT_PRESSED)
    {
       button = digitalRead(BUTTON_PIN);
    }
   
    waitTillAllButtonsReleased();                   // debounce
    g_dialHigh = analogRead(DIAL_APIN);             // save high speed position
   
    button = digitalRead(BUTTON_PIN);               // wait for button to be pressed again
    while(button == BUTTON_NOT_PRESSED)
    {
       button = digitalRead(BUTTON_PIN);
    }
   
    waitTillAllButtonsReleased();                   // debounce
    g_dialMid = analogRead(DIAL_APIN);              // save middle speed position

    eepromWriteInt(EEPROM_DIAL_LOW, g_dialLow);    // save dial position references to eeprom
    eepromWriteInt(EEPROM_DIAL_MID, g_dialMid);
    eepromWriteInt(EEPROM_DIAL_HIGH, g_dialHigh);
  }
  else
  {
    g_dialLow  = eepromReadInt(EEPROM_DIAL_LOW, 0, 1023);  // read dial position references from eeprom
    g_dialMid  = eepromReadInt(EEPROM_DIAL_MID, 0, 1023);
    g_dialHigh = eepromReadInt(EEPROM_DIAL_HIGH, 0, 1023);
  }
}

void loop()
{
  unsigned long dialVal = analogRead(DIAL_APIN);
  long percentOn;
  unsigned long usTotal = 0;
  unsigned long usOn = 0;
  unsigned long usOff = 0;
  int forward;

  if (g_dialHigh > g_dialLow)
  {
    if (dialVal >= g_dialMid)
    {
      forward = 0;
      percentOn = 100*(dialVal-g_dialMid)/(g_dialHigh-g_dialMid);
    }
    else
    {
      forward = 1;
      percentOn = 100*(g_dialMid-dialVal)/(g_dialMid-g_dialLow);
    }
  }
  else // g_dialHigh < g_dialLow
  {
    if (dialVal <= g_dialMid)
    {
      forward = 0;
      percentOn = 100*(g_dialMid-dialVal)/(g_dialMid-g_dialHigh);
    }
    else
    {
      forward = 1;
      percentOn = 100*(dialVal-g_dialMid)/(g_dialLow-g_dialMid);
    }
  }
 
  if (percentOn <= 5)  // Turn motors off when they are close to off
  {
    percentOn = 0;
  }
  else if (percentOn >= 95)  // Turn motors full on when they are close to full on
  {
    percentOn = 100;
  }
 
  usTotal = 1000000/UPDATE_HZ;
  usOn = usTotal*percentOn/100;
  usOff = usTotal - usOn;

  if (forward)
  {
    digitalWrite(MOTOR_IN1_PIN, HIGH);
    digitalWrite(MOTOR_IN2_PIN, LOW);
  }
  else
  {
    digitalWrite(MOTOR_IN1_PIN, LOW);
    digitalWrite(MOTOR_IN2_PIN, HIGH);
  }

  if (usOn)
  {
    unsigned int msOn = usOn/1000;
    usOn %= 1000;
    digitalWrite(MOTOR_ENABLE_PIN, HIGH);
    if (msOn)
      delay(msOn);
    if (usOn)
      delayMicroseconds(usOn);
  }

  if (usOff)
  {
    unsigned int msOff = usOff/1000;
    usOff %=1000;
    digitalWrite(MOTOR_ENABLE_PIN, LOW);
    if (msOff)
      delay(msOff);
    if (usOff)
      delayMicroseconds(usOff);
  }
}

////////////////////////////////////////////////////////////////////////////////
// Helper functions
////////////////////////////////////////////////////////////////////////////////

// Writes an integer to eeprom
void eepromWriteInt(int addr, int val)
{
  addr *= 2;  // int is 2 bytes
  EEPROM.write(addr+1, val&0xFF);
  val /= 256;
  EEPROM.write(addr+0, val&0xFF);
}

// Reads an integer from eeprom
int eepromReadInt(int addr, int minVal, int maxVal)
{
  int val;

  addr *= 2;  // int is 2 bytes
  val = EEPROM.read(addr+0);
  val *= 256;
  val |= EEPROM.read(addr+1);
  val = constrain(val, minVal, maxVal);
  return val;
}

// Wait for all the current button presses to end (handles debouncing buttons)
void waitTillAllButtonsReleased()
{
  while(1)
  {
    int i;
    int button;

    // Need to sample many times to makes sure the button isn't currently bouncing
    for(i=0; i<100; ++i)
    {
      button  = digitalRead(BUTTON_PIN);
      delayMicroseconds(10);
    }

    if (button == BUTTON_NOT_PRESSED)
    {
      break;
    }
  }
}


I've harvested a lot of plastic gears, several stepper motors, and other cool toys. There has been discussion about a lever toggling the direction of rotation of the shaft that will move the "hooks". Right now, I'm imagining something that will be better illustrated than described with words. I'll post that sometime this afternoon.

You all gave me so much food for thought. I am very grateful.
13  Using Arduino / Project Guidance / Re: Arduino, and Mechanical Movement of Objects - a Newbie Question on: February 07, 2013, 03:16:15 pm
Hey there;

Oh, that guy? His name is Goldberg; Rube was his grandfather.   smiley-mr-green  There are a couple of styles of swifts. The umbrella swift opens and closes like an umbrella, and the yarn wraps around the parts that cross. The Amish swift is like a large, wooden plus sign that sits on a table, and has a number of holes drilled part way into all four arms for pegs so as to accommodate varying sized skeins. Yarn can be wound onto or from either of these styles. There is also a weasel . It's a tall, narrow box on 4 short legs, and a wooden gear system inside. Attached to the front of the box is a hub with 6 or 8 spokes radiating from it, and each of these has a fixed dowel attached to the ends at 90 degree angles. One of the spokes has a dowel at about it's midway point, also at a 90 degree angle, and serves as a crank. The weasel is best for winding only, as it isn't adjustable like the other two. However the mechanism inside counts rotations and when some number is reached, "pop goes the weasel".

There are, of course, variations on all of these. The pedal-powered swift is not among them, and is a unique sort of device to be sure. It doesn't appear to be adjustable, occupies a considerable amount of floor space as compared to the other three, and is bound to make all passers by at the county fair's sheep to wool contest smile. With the exception of the steam, any of the other swifts will do the same thing. The in-line steamer is aimed at de-kinking the unraveled sweater yarn, I think. Some folk take a more pedestrian approach when they wash it.

The gadget I'm messing with isn't a swift. It's meant to split a 4 ply yarn into two 2 ply yarns, or four 1 ply yarns. The lady I'm making it for was my high school art teacher a whole bunch of years ago. She has struggled for years with a degenerative form of arthritis, and leaves her wheel chair only for moments at a time. The splitter I'm making is designed to sit between the arms of her chair on her lap. She has spent days hand splitting the yarn from a single sweater. There are at least two large improvements I still want to make, but she's down to about 3 hours now to split the plies of a sweater. I'd like to cut that in half again.
14  Using Arduino / Project Guidance / Re: Arduino, and Mechanical Movement of Objects - a Newbie Question on: February 07, 2013, 11:45:49 am
Hey, Jabbado;

That is a good idea. Like you, I also looked for the fishing reel part image to no avail. My dad had a ratcheting screwdriver when we were kids that operated by way of a shaft with the same, or very similar groves. I'm a sort of old fashioned fisherman. You know; bait the hook, hang a bob on the line, cast it out a little ways, and be vewy, vewy quiet.


Howdy, Retroplayer;

That threaded rod idea is one I've also been contemplating. Using your illustration labels with C being the output gear, A the idler, and B the driven gear, would you use the threaded rod as the axle for A, or B? The "hooks" are currently made from 18 gauge stainless wire, hardened by heating over a gas range, and quenched in water; I'll try 14 ga. or 16 ga. next, but it would be easy enough to add a loop or two to extend below the present rod to a threaded rod.

Your nuts...where might I find those, and by what name? I haven't had any luck with locating them, but they sound perfect. Since I don't want for either the steel rod the steel rod, nor the  threaded rod to move due to the hooks that connect them, I'm thinking of adding a 4th gear to the array. It will be below, and between A & B, and if I go this direction, the threaded rod will be it's axle, as well as the pivot point for A & B.

I haven't worked out yet what to make the trip levers from, nor how throwing the lever will move the bar that connects A & B. One step at a time. I appreciate the exchange of ideas. My thanks to both of you!

Oh, I almost forgot. Your comment about using the high tech approach when a low tech one would do just as well if not better is a wise one. I disassemble old sewing machines, re-plate (nickel) the parts that need it, sandblast the main casting, and repaint that with auto lacquer, reassemble, lube, and adjust tension, needle position, and generally just put things back in order again. I have 18 machines built from the late 50s to the late 70s. These machines are workhorses.

Beginning in the late 70s, the vast majority of machines were computerized. Rather than having exchangeable cams to make different stitch patterns, manufacturers offering dozens or even hundreds of stitches built in, and used electronics to accomplish the movement of the needles, and feed dogs. I haven't spoken to anyone who uses more than a couple of these no matter how many their machine can do. But if a component on a PCB goes, it often affects the whole machine, and it's rare that a user can isolate and repair the problem.
15  Using Arduino / Project Guidance / Re: Arduino, and Mechanical Movement of Objects - a Newbie Question on: February 06, 2013, 01:31:46 pm
I've never seen a gear like this one before, and it's an interesting idea. The down side to using it is that, whether I was splitting a 4 ply into (2) x 2 ply yarns, a 6 ply into (3) x 2 ply yarns, or an 8 ply into (4) x 2 ply yarns, the yarns would always occupy the same real estate on the drum. I'd want to spread the yarns over almost all of the drum however many new plies the splitter makes. So, if I were making  (2) x 2 ply yarns, each of the 2 plies would be distributed over almost half of the drum, and so on.

I'm happy to keep posting here; it's a friendly, well informed place. But as I lean away from using any Arduino hardware, or software, I'm wondering if I might be veering off topic too much? I'm guessing that there must be a forum that's better suited for amateur mechanical engineering topics such as this one is becoming.
Pages: [1] 2 3