collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[27 de Março de 2024, 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Ventoinha e motor servo  (Lida 5682 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline Sangolica

  • Mini Robot
  • *
  • Mensagens: 11
Ventoinha e motor servo
« em: 03 de Março de 2014, 14:37 »
Olá.

Isto é capaz de ser uma pergunta estúpida, mas vai aqui na mesma :x

Ora, o meu colega anterior fez um programa para controlar um motor servo, agora a ideia é trocar isso por uma ventoinha. Dá para usar o mesmo código? Há alguma diferença em programar para um e outro?

E já agora, alguém conhece algum esquema porreiro para ligar a ventoinha (4 pin) ao Arduino?

Thanks :)

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Ventoinha e motor servo
« Responder #1 em: 03 de Março de 2014, 15:10 »
Como é que se controla um servo? E como é que se controla uma ventoínha de 4 pinos? Tens que procurar por isso, pelo menos os pinouts das fichas, para depois se poder comparar e chegar a alguma conclusão.

Offline Pisciano

  • Mini Robot
  • *
  • Mensagens: 17
Re: Ventoinha e motor servo
« Responder #2 em: 03 de Março de 2014, 15:55 »
À partida, e de forma genérica, é habitual se controlar os servomoteres por PWM -> modulação por largura de impulso

http://www.jameco.com/Jameco/workshop/howitworks/how-servo-motors-work.html

Ventoinhas... daquelas utilizadas nos computadores?


Offline Sangolica

  • Mini Robot
  • *
  • Mensagens: 11
Re: Ventoinha e motor servo
« Responder #3 em: 04 de Março de 2014, 10:03 »
Pois, o servo não sei, porque não está aqui. A ventoinha sim, é de 4 pinos (ou seja, controlada por PWM. Cores preto, amarelo, verde e azul).

Quer dizer, que se seguir um esquema de um servo para arduino e usar o cabo azul da ventoinha como se fosse o pwm do servo, talvez funcione.
Bem, vamos experimentar.


Ponho aqui o código, só para o caso de vir a ser necessário.
Código: [Seleccione]
void setup() {
  Serial.begin(57600);    // Set terminal Serial Port interface
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
  Serial.println("Serial Communication Works");
  if (PERIPHERAL_MOTOR_INSTALLED)
  {
      servoPos = 0;
      myServo.attach(9);  // attaches the servo on pin 9 to the servo object
      Serial.println("Servo Attached"); 
  }

(...)

void moveMotor(int mode)
{
  switch(mode)
  {
     case  1:  // Turn Left
          myServo.write(30); // 30 turns to left
          delay(1500);
          break;
     
     case  2:  // Turn Right
          myServo.write(120); // 120 turns to right
          delay(1618);
          break;
     
     case  3:
          myServo.write(120);
          delay(100);
          myServo.write(30);
          delay(119);
          break;
     
     case  4:
          myServo.write(120);
          delay(200);
          myServo.write(30);
          delay(222);
          break;
     
     case  5:
          myServo.write(120);
          delay(300);
          myServo.write(30);
          delay(329);
          break;
     
     case  6:
     
     break;
     
   
   
   
  }
  myServo.write(90);   // stop servo // keep constant the servo
 
}

(...)

void loop() {
  // First checks is there any incoming packet
  int packetSize = Udp.parsePacket();
  if(packetSize)
  {
   
    /* EXPECTED PACKET TYPE */
    /*
      packetBuffer
      0:  deviceID             
      1:  peripheralID m (motor)
      2:  actionType: m (mode)
      3:  actionValue CHAR[2]
      4:  actionValue CHAR[1]
      5:  actionValue CHAR[0]
      6:  XXXXX - not used 
     
    */
   
    Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
    Serial.print("Incoming UDP Packet: ");
    Serial.println(packetBuffer);
   
    char id = packetBuffer[0];
   
    // if Incoming packet is for this device keep continue
   
    if (id == DEVICE_ID)
    {
          char peripheralType = packetBuffer[1];
          char actionType = packetBuffer[2];
         
          char buffer[5];
          buffer[0] = packetBuffer[3];
          buffer[1] = packetBuffer[4];
          buffer[2] = packetBuffer[5];
          int  modeValue;
          modeValue = atoi(buffer);
         
         
         
         
         
          // --- BRGIN ACTUATORS --- //
          if (peripheralType == 'm') // if peripheral is motor
          {
                  if (PERIPHERAL_MOTOR_INSTALLED)
                  {
                       if (actionType == 'l')
                       {
                           myServo.write(30);
                           delay(modeValue);
                           myServo.write(90);
                       }else if (actionType == 'r')
                       {
                           myServo.write(120);
                           delay(modeValue);
                           myServo.write(90);
                       }else if (actionType == 'm')
                       {
                           moveMotor(modeValue);
                           
                       }else if (actionType == 's')
                       {
                           myServo.write(90);
                       }else
                       {
                           Serial.println("Unexpected UDP Character in UDP Packet.");
                       }
                  }else
                  {
                      Serial.println("Server asked to control the motor but motor is not installed.");
                  }   
          }

(...)

Omiti partes do código que não estão ligadas ao motor.

Online jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.947
  • NERD!
Re: Ventoinha e motor servo
« Responder #4 em: 04 de Março de 2014, 10:39 »
Nas ventoinhas o PWM para controlar a velocidade tem de ser na alimentação (12V).
O sense é uma saída que envia um numero de impulsos cada rotação, para informar o sistema da sua velocidade.
Se ligares os impulsos para um servo à saída sense de uma ventoinha na melhor hipótese não acontece nada, na pior podes queimar qualquer coisa.

 
Edit: Esqueçam, não reparei que eram ventoinhas de 4 pinos.
« Última modificação: 04 de Março de 2014, 12:03 por jm_araujo »

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Ventoinha e motor servo
« Responder #5 em: 04 de Março de 2014, 11:47 »
Não sabemos qual é a aplicação, pois não foi dita, no entanto há uma questão que não pode ser ignorada.

É certo que controlas ambos por PWM, mas controlas coisas diferentes: no servo controlas posição e na ventoínha velocidade. Impossível estar à espera do mesmo comportamento, a não ser que a ideia seja mesmo essa...

Offline Tiobel

  • Mini Robot
  • *
  • Mensagens: 27
Re: Ventoinha e motor servo
« Responder #6 em: 04 de Março de 2014, 13:59 »
Acho que este post te pode ajudar

http://forum.arduino.cc/index.php?PHPSESSID=9gvjju3f1v2pkrdbqlk3igsff3&topic=155089.45

A ventoinha pode funcionar com uma frequência de PWM diferente da gerada pelo Arduino(tens de ver na datasheet da ventoinha) e também a tensão do pwm pode ser diferente de 0-5V.

Outra solução possível será um circuito deste tipo



Se ligares os 12V e GND ela funciona sem sinal de PWM? Se sim podes implementar esta solução tb.

Offline Hugu

  • Mini Robot
  • *
  • Mensagens: 5.602
  • Keyboard not found. Press any key to continue.
    • [url=www.g7electronica.net]G7 Electrónica.net[/url]
Re: Ventoinha e motor servo
« Responder #7 em: 05 de Março de 2014, 00:00 »
pelo que percebi ele quer usar o arduino e usar o mm codigo para controlar uma ventoinha com o codigo que foi feito pra controlar um servo.. (acho que o moço quer fazer copy-past do codigo e usar o mm codigo feito pra um motor servo de modo a poder usar para uma ventoinha.. :P)

Se queres procurar um programa pra ventoinha e fazer logo copy-past, acho que se procurares no google, encontras de certeza mil e um codigos feitos!..

https://www.google.pt/search?q=code+arduino+pwm+fan+controller&client=firefox-a&hs=7s0&rls=org.mozilla:en-GB:official&channel=sb&source=lnms&tbm=isch&sa=X&ei=gGgWU8PAL8nTsgbJ94G4Aw&ved=0CAcQ_AUoAQ&biw=1280&bih=661

Convinha era saber qual é o codigo que tens do servo, qual servo era e qual o schematic, e na ventoinha, saber qual o tipo de ventoinha (5v, 12v)?... consumo maximo da ventoinha?

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Ventoinha e motor servo
« Responder #8 em: 05 de Março de 2014, 00:19 »
O servo usa PPM, não acho correcto chamar-lhe PWM porque leva a este tipo de confusões!
A ventoinha basta ver um sinal PWM naquele pino que regula a rotação.
Avr fanboy

Offline Sangolica

  • Mini Robot
  • *
  • Mensagens: 11
Re: Ventoinha e motor servo
« Responder #9 em: 05 de Março de 2014, 09:52 »
Quero ver se aproveito o código já feito, porque encurtaram-me o prazo para ter isto pronto, e por isso deixei de poder tentar perceber mais isto.

O código eu coloquei num post mais acima.

O objectivo é ligar a ventoinha a um servidor e consoante os valores que vêm de lá, controlar a velocidade dela.

Do servo, não sei nada, pois já cá não andava quando eu vim para cá. A ventoinha é 3000rpm, 12V, 0.26A.

Tiobel: sim funciona, mas quero regular a velocidade. Tks

senso: obrigada, por acaso pelo que me explicaram aqui o servo também era por PWM. Pelos vistos, enganaram-me :x

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Ventoinha e motor servo
« Responder #10 em: 05 de Março de 2014, 10:32 »
senso: obrigada, por acaso pelo que me explicaram aqui o servo também era por PWM. Pelos vistos, enganaram-me :x

Não enganaram... É PWM, só que não usas dos 0% aos 100% de duty cycle, por isso há algumas teorias que dizem que por causa disso não é PWM, mas PPM. Quando a mim estão errados... Mas encontras muita fruta por essa net fora se quiseres ouvir os argumentos acerca dessa questão...

PPM puro também não é, porque falta um meio extra para sincronizar...