Pages: [1]   Go Down
Author Topic: control 8 printers with one card?  (Read 1172 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I am extremely new to Arduino and to electronics. 

I work at a theatre company.  I need to control 8 printers.  I have broken down used printers so that all I need to do is supply about 7.5V to a 12V DC motor that's in the printer.  Running at 12V is too fast.  The goal is to make paper beautifully rain from the sky for about 10 min. 

How do I do that?  Can one Arduino control that many?  How do I supply more than 5V?  Is it possible for the sequence in the programing to have 2 motors run at the same time?  Can the card supply power to more than one motor at a time?

Any advice will be much appreciated.  Thank you!
Logged

0
Offline Offline
Faraday Member
**
Karma: 16
Posts: 2855
ruggedcircuits.com
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

What an interesting application. It would be great to see some videos when it's done.

A key concern is how much current the motors are drawing. There are several motor driver shields and modules that you can buy for Arduino and they are roughly segmented by the maximum current they can provide (here is ours for example).

If the motors only will ever turn in one direction you could conceivably drive 8 motors from one Arduino using a multi-channel transistor driver like the ULN2803. Driving multiple motors at the same time is certainly no problem from a programming point of view.

To supply more than 5v you will need an external power supply. Do not count on "the card" (I'm assuming you mean the Arduino) to supply power to your motors. That's what a motor driver is for, and you will need external power for that.

--
The Ruggeduino: compatible with Arduino UNO, 24V operation, all I/O's fused and protected
Logged

Global Moderator
Boston area, metrowest
Offline Offline
Brattain Member
*****
Karma: 549
Posts: 27418
Author of "Arduino for Teens". Available for Design & Build services. Now with Unlimited Eagle board sizes!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Why not just have an external supply on a power strip, and just turn the power on, and then back off?

http://www.mpja.com/prodinfo.asp?number=16012+PS

Or have the 7.5V be turned on/off with a arduino controlled relay circuit.
Logged

Designing & building electrical circuits for over 25 years. Check out the ATMega1284P based Bobuino and other '328P & '1284P creations & offerings at  www.crossroadsfencing.com/BobuinoRev17.
Arduino for Teens available at Amazon.com.

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I have been assigned to program this project and i have hit a wall.  I have limited experience in a class setting playing around with arduino so i am using that experience o lead me in programming and set up.

So first of all I am using this circuit to control the motors.  [http://arduino-for-beginners.blogspot.com/2011/03/controlling-12v-dc-motorfan-with.html]

Its a series of optisolators and relays to get the 12v power. (external Power supply)

I have been using some blink tutorails to get the language down.  I am using LED@HIGH for a period of time to represent the printers printing.  I can get them to cycle but stopping is a problem.  I want to stop them at the exact moment of a buttom press.  Currentlly the loop has to cycle through all 8 at least once after the button is pressed in order to stop.  SHould I move this over to the programming area?  Anything to assit will be amazing.





int switchPin2 = 2;
int switchPin = 1;
int led1Pin = 13;
int led2Pin = 12;
int led3Pin = 11;
int led4Pin = 10;
int led5Pin = 9;
int led6Pin = 8;
int led7Pin = 7;
int led8Pin = 6;

int val;                       
int val2;                       
int buttonState;               
int lightMode = 0;             

void setup() {
  pinMode(switchPin, INPUT);   

  pinMode(led1Pin, OUTPUT);
  pinMode(led2Pin, OUTPUT);
  pinMode(led3Pin, OUTPUT);
  pinMode(led4Pin, OUTPUT);
  pinMode(led5Pin, OUTPUT);
  pinMode(led6Pin, OUTPUT);
  pinMode(led7Pin, OUTPUT);
  pinMode(led8Pin, OUTPUT);
  Serial.begin(9600);                // Set up serial communication at 9600b
  buttonState = digitalRead(switchPin);   // read the initial state
}

void loop(){
  val = digitalRead(switchPin);      // read input value and store it in val
  delay(100);                         // 10 milliseconds is a good amount of time
  val2 = digitalRead(switchPin);     // read the input again to check for bounces
   if (val == val2) {                 // make sure we got 2 consistant readings!
    if (val != buttonState) {          // the button state has changed!
      if (val == LOW) {                // check if the button is pressed
        if (lightMode == 0) {          // if its off
          lightMode = 1;               // turn lights on!
        } else {
          if (lightMode == 1) {        // if its all-on
            lightMode = 2;             // make it blink!
          } else {
            if (lightMode == 2) {      // if its blinking
              lightMode = 3;           // make it wave!
            } else {
         if (lightMode == 3){ //  if its waving,
                lightMode == 0;       // turn light off!
              }
         }
          }
        }
      }
    }
    buttonState = val;                 // save the new state in our variable
  }

  // Now do whatever the lightMode indicates
  if (lightMode == 0) { // all-off
    digitalWrite(led1Pin, LOW);
    digitalWrite(led2Pin, LOW);
    digitalWrite(led3Pin, LOW);
    digitalWrite(led4Pin, LOW);
    digitalWrite(led5Pin, LOW);
    digitalWrite(led6Pin, LOW);
    digitalWrite(led7Pin, LOW);
    digitalWrite(led8Pin, LOW);
  }

  if (lightMode == 1) { // all-on test
    digitalWrite(led1Pin, HIGH);
    digitalWrite(led2Pin, HIGH);
    digitalWrite(led3Pin, HIGH);
    digitalWrite(led4Pin, HIGH);
    digitalWrite(led5Pin, HIGH);
    digitalWrite(led6Pin, HIGH);
    digitalWrite(led7Pin, HIGH);
    digitalWrite(led8Pin, HIGH);
  }

  if (lightMode == 2) { // test done
    digitalWrite(led1Pin, LOW);
    digitalWrite(led2Pin, LOW);
    digitalWrite(led3Pin, LOW);
    digitalWrite(led4Pin, LOW);
    digitalWrite(led5Pin, LOW);
    digitalWrite(led6Pin, LOW);
    digitalWrite(led7Pin, LOW);
    digitalWrite(led8Pin, LOW);
    delay(100);
  }
  if (lightMode == 3)  { // "wave"
    digitalWrite(led1Pin, HIGH);
    delay(1000);
    digitalWrite(led1Pin, LOW);
    digitalWrite(led3Pin, HIGH);
    delay(1000);
    digitalWrite(led3Pin, LOW);
    digitalWrite(led6Pin, HIGH);
    delay(1000);
    digitalWrite(led6Pin, LOW);
    digitalWrite(led4Pin, HIGH);
    delay(1000);
    digitalWrite(led4Pin, LOW);
    digitalWrite(led5Pin, HIGH);
    delay(1000);
    digitalWrite(led5Pin, LOW);
    digitalWrite(led7Pin, HIGH);
    delay(1000);
    digitalWrite(led7Pin, LOW);
    digitalWrite(led2Pin, HIGH);
    delay(1000);
    digitalWrite(led2Pin, LOW);
    digitalWrite(led8Pin, HIGH);
    delay(1000);
    digitalWrite(led8Pin, LOW);
      }   
}
Logged

Global Moderator
UK
Offline Offline
Brattain Member
*****
Karma: 310
Posts: 26626
I don't think you connected the grounds, Dave.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I'd have to say a little time spent learning about arrays would probably help ou a great deal - the way your code is at the moment, it's hard to see the forest for the trees.
Logged

"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Can you use the no delay blink code to control an array??
Logged

Global Moderator
UK
Offline Offline
Brattain Member
*****
Karma: 310
Posts: 26626
I don't think you connected the grounds, Dave.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I think I just answered that question in another thread.
Logged

"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

Madrid, Spain
Offline Offline
Newbie
*
Karma: 0
Posts: 41
void guarantee{};
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

This shield (from Sparkfun) will drive two high voltage motors (up to 41v at 30A).
I guess you need 4 arduinos and 4 shields.

http://www.sparkfun.com/products/10182
Logged

Pages: [1]   Go Up
Jump to: