| Next revision | Previous revision |
| pt:examples:motor:dc [2015/12/14 12:23] – Criação deste novo documento. artica | pt:examples:motor:dc [2020/07/20 09:00] (current) – external edit 127.0.0.1 |
|---|
| ~~PB~~ | <pagebreak> |
| ====== Motor DC ====== | ====== Motor DC ====== |
| |
| ===== Teoria ===== | ===== Teoria ===== |
| |
| [{{ :examples:motor:dc:motor_dc_picture.jpg?220|DC motor}}] | [{{ :examples:motor:dc:motor_dc_picture.jpg?220|Motor DC}}] |
| |
| Motores DC de ímã permanente são muito comuns em diferentes aplicações, onde são essenciais pequenas dimensões, alta potência e baixo preço. Devido à sua velocidade relativamente elevada, eles são utilizados em conjunto com a transmissão (à saída menor velocidade e um binário mais elevado). | Motores de corrente contínua (ou motores DC) de ímã permanente são muito comuns em diferentes aplicações, onde são essenciais pequenas dimensões, alta potência e baixo preço. Devido à sua velocidade relativamente elevada, eles são utilizados em conjunto com a transmissão (à saída menor velocidade e um binário mais elevado). |
| |
| [{{ :examples:motor:dc:motor_dc_performance.png?220|O gráfico ideal de relação entre a velocidade (V), a corrente (I), potência (P), eficiência (η) e torque (T) de um motor DC.}}] | [{{ :examples:motor:dc:motor_dc_performance.png?220|O gráfico ideal de relação entre a velocidade (V), a corrente (I), potência (P), eficiência (η) e torque (T) de um motor DC.}}] |
| P = I * Vq, e quando I = 0, então P = 0 W | P = I * Vq, e quando I = 0, então P = 0 W |
| |
| | Em conclusão, podemos dizer que, se o transistor é um elemento de comutação no esquema, em seguida, a eficiência do sistema é alta e a potência usada pelos transistores é baixa. Em comparação com um sistema linear (analógico), em que o transistor em estado semi-aberto consome a mesma quantidade de energia do que o do motor, que é uma grande poupança de energia. Na prática, não existe um sistema sem perdas e, de facto, as perdas ocorrem quando o transistor comuta de um estado para outro. Portanto, as perdas mais elevadas ocorrem quando os transistores são ligados em freqüências mais altas. |
| | |
| In conclusion, we can say that if the transistor is a switch element on the scheme, then the system efficiency is high and the power used by transistors is low. Compared with a linear (analog) system, where the transistor consumes of the half-open state the same amount of power than the motor, it is a very big energy savings. In practice, there is no lossless system and in fact, the losses occur when the transistor switch one state to other. Therefore, higher losses are occurring when the transistors are switched at higher frequencies. | |
| |
| ===== Prática ===== | ===== Prática ===== |
| |
| The HomLab uses a combined ships to drive DC motors, which includes 2 integrated H-bridges and circuit breaking diodes. The motor is controlled with three digital signals, one of them is operation enabling signal //enable// and the other two are determining the state of the transistors in the H-bridge. Never can occur that two vertical transistors are opened, because this would short-circuit the power source. This means that the driver is designed as foolproof and only option that can be chosen is which transistor (upper or bottom) of one side of the H-bridge (of “semi-bridge”) is opened. In other words the polarity is selected using two driving signals which is applied to the two ends of the coil of the motor. | O HomeLab inclui componentes para controlar motores DC, incluindo 2 pontes-H integradas e diodos de quebra de circuitos. O motor é controlado com três sinais digitais, um deles é sinal de ligação //enable// e os outros dois são a determinação do estado dos transistores na ponte-H. Nunca pode ocorrer que dois transistores verticais sejam abertos, porque isso seria curto-circuitar a fonte de alimentação. Isto significa que o driver é concebido à prova de falhas e que só pode ser escolhida a opção de qual o transistor que é aberto (superior ou inferior) de um lado da ponte-H (de "semi-ponte"). Em outras palavras, a polaridade é seleccionada utilizando dois sinais de accionamento aplicados às duas extremidades da bobina do motor. |
| |
| The Combo Board of the HomeLab allows connecting up to four DC motors. Basically, for every motor there is a H-bridge which is controlled with two digital output pins of the microcontroller, because the enable pin is constantly high. If both controlling pins have same value, then the motor is stopped if different then it revolves in the corresponding direction. The state of the H-bridge is described in the following table: | A placa de combinaçãodo HomeLab permite conectar até quatro motores DC. Basicamente, para cada motor existe uma ponte-H, que é controlada com dois pinos de saída digital do microcontrolador, porque o pino de ligação está constantemente alto. Se ambos os pinos controladores têm mesmo valor, então o motor está parado, se for diferente, então ele gira na direção correspondente. O estado da ponte-H está descrita na tabela seguinte: |
| |
| ^ Input A ^ Input B ^ Output A ^ Output B ^ Result ^ | ^ Entrada A ^ Entrada B ^ Saida A ^ Saida B ^ Resultado ^ |
| | 0 | 0 | - | - | The motor is stopped | | | 0 | 0 | - | - | O motor está parado | |
| | 1 | 1 | + | + | The motor is stopped | | | 1 | 1 | + | + | O motor está parado | |
| | 1 | 0 | + | - | The motor revolves in direction 1 | | | 1 | 0 | + | - | O motor gira na direcção 1 | |
| | 0 | 1 | - | + | The motor revolves in direction 2 | | | 0 | 1 | - | + | O motor gira na direcção 2 | |
| |
| For each motor that is connected to the H-bridge is operated by two of the digital output of the microcontroller. The motor speed is is controlled by timers that generate a continuous PWM signals to the H-bridge, the direction of rotation of the motor is controlled to the second terminal. Motor speed is controlled a relative values from 0 to 255, where 0 means that the motor is standing and 255 is the maximum moving speed of the motor. The following code describes a function’s, which are described in the HomeLab II (ATmega2561) library to control DC motors. | Para cada motor ligado à ponte-H é operado por duas saídas digitais do microcontrolador. A velocidade do motor é controlada por temporizadores que geram sinais PWM contínuos para a ponte-H, o sentido da rotação do motor é controlado no segundo terminal. A velocidade do motor é controlada a valores relativos entre 0 e 255, em que 0 significa que o motor está parado e 255 é a velocidade máxima do movimento do motor. O código que se segue descreve uma função descrita na biblioteca do HomeLab II (ATmega2561) para controlar os motores DC. |
| |
| <code c> | <code c> |
| </code> | </code> |
| |
| The controlling pins of four motor-controllers are determined with the array dcmotor_pins in the library. Before controlling the motors, function dcmotor_drive_pwm_init with the number of the motor-controller (0 – 3) must be called out. It sets the pins as output. It should also set the timer prescaler, for HomeLab II timer2_prescale and for HomeLab III timer_prescale, which determines the frequency of the PWM signal. In case of HomeLab II, as the program does not have functions which are using timer, it is appropriate for the value TIMER2_NO_PRESCALE. When for example an ultrasound sensor are used, then should be chosen TIMER2_PRESCALE 8, otherwise the controller performance may not be sufficient and the sensor readings may be corrupted. This is not applying in the HomeLab III. Higher values of the prescaler are not recommended, because it makes the motor rotation intermittent, and generates vibration. | Os pinos controladores de 4 controladores de motor são determinados com o array dcmotor_pins na biblioteca. Antes de controlar os motores, a função dcmotor_drive_pwm_init com o número do motor-controlador (0-3) deve ser chamada. Ela define os pinos como saída. Também define o pré escalador do temporizador, para o HomeLab II timer2_prescale e para o HomeLab III timer_prescale, que determina a frequência do sinal PWM. No caso do HomeLab II, como o programa não tem funções que usem o temporizador, é apropriado para o valor TIMER2_NO_PRESCALE. Quando, por exemplo, são usados sensores de ultra-som, então deve ser escolhido TIMER2_PRESCALE 8, caso contrário, o desempenho do controlador pode não ser suficiente e as leituras dos sensores podem vir corrompidas. Isto não se aplica no HomeLab III. Valores mais altos do pré escalador não são recomendados, porque torna a rotação do motor intermitente, e gera vibração. |
| |
| Function dcmotor_drive_pwm is for control motor speed. This function need three input values: motor number, direction (-1, 0, +1), where -1 is the rotation in one direction, +1 other direction and 0 for stop and thirdly, the speed range of 0-255. The speed value is not linked to a specific rotational speed, it is the relative value between minimal and maximal motor speed. Motor actual speed depends on the motor type, load and the supply voltage. Motor speed accuracy is 8-bits, which means that the minimum control accuracy is 1/255 of the maximum engine speed. | Função dcmotor_drive_pwm é usada para controlar a velocidade do motor. Esta função tem três valores de entrada: número do motor, direção (-1, 0, +1), onde -1 é a rotação numa direção, +1 na outra direção e 0 para parar e, em terceiro lugar, a gama de velocidade de 0-255. O valor de velocidade não está associado a uma velocidade de rotação específica, é o valor relativo entre a velocidade minima e máxima do motor. A velocidade real do motor depende do tipo de motor, da carga e da tensão de alimentação. A precisão de velocidade do motor é de 8-bits, o que significa que a precisão mínima de controlo é 1/255 da velocidade máxima do motor. |
| |
| The following is an example program which controls first and second DC motor so that first motor rotates half of the speed and the second motor speed is controlled by a potentiometer. | O seguinte é um exemplo de programa que controla o primeiro e o segundo motor DC de modo que o primeiro motor roda a metade da velocidade e a velocidade do segundo motor é controlada por um potenciómetro. |
| |
| <code c> | <code c> |