роботы робототехника микроконтроллеры


 Страниц (5): « 1 2 3 4 [5]   

> Без описания
Artem Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  



Semen8991, я бы хотел уточнить, какой насос для накачивания воды вы будите использовать, и какой для откачивания, какая примерно скорость откачивания и ещё какой объём барабана, это всё нужно для того, чтобы сделать правильное время, которое будет качать мотор.
 
 Top
Semen8991 Post Id


Рядовой


Сообщений всего: 12
Дата рег-ции: Июнь 2013  



Привет! Ну там небольшой коробок с мотором, моторчик обычный
 
 Top
Artem Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  



Всё, код готов, проверен, испытан в бою, так сказать. Некоторые детали всё же придётся дорабатывать вам, Semen8991, такие как время работы откачивающегося насоса, в программе я укажу место, где можно изменять время работы мотора. Мотор, который будет откачивать воду будет подключён к порту C (PC2, PC3), к стати, один вопрос, закачивать воду вы будите тоже при помощи него?, основной мотор будет подключён к PC1, PC0. (Схему я по позже выложу).
P.S. код сделан согласно вашим пожеланиям:
Semen8991 пишет:
Стирка закончилась (10мин!) и включился насос, слилась вода, недолгий отжим, потом набралась вода и полоскание, потом опять насос, и в конце уже работает насос и очень сильно крутится мотор (на полную мощность!), а на стирке и полоскание не очень большая скорость! Спасибо огромное заранее!

поэтому кнопка только одна, включение, подключена к порту PD0.
CODE:
#include <avr/io.h> // подключаем библиотеку АВР
#include <util/delay.h> // подключаем библиотеку задержек
#define nop() {asm("nop");}

int main (void) {

unsigned int f;

f=0;

int t;

t=0;

DDRB = 0xFF;

DDRC = 0xFF;

DDRD = 0x00;

PORTD = 0xFF;

TCCR1A |= (0<<WGM11)|(1<<WGM10)|(1<<COM1A1)|(0<<COM1A0);

TCCR1B |= (0<<WGM12)|(0<<WGM13)|(0<<CS11)|(1<<CS10);

ICR1 = 0x00;

OCR1A = 0x00;

while (1==1) {

if (!(PIND&(1<<PIND0))) {

if (f==0) {

f=f+1;

_delay_ms(100);

}

else {

f=0;

_delay_ms(100);

}

}

if (f==1) {

for (int r=0; r<30; r++) {

t=125;

OCR1A = t;

PORTC = (1<<PC0)|(0<<PC1);

_delay_ms(2000); // изменяя параметр в скобках можно изменять время, которое основной мотор мотор вращается в определённую сторону, здесь указывается время в милисекундах

PORTC = (0<<PC0)|(1<<PC1);

_delay_ms(2000); // здесь значение в скобках должно совпадать со значением в предыдущей задержке

}

PORTC = (1<<PC2)|(0<<PC3);

_delay_ms(10000); // регулируя это значение можно изменять время работы насоса для откачки воды

PORTC = (0<<PC2)|(1<<PC3);

for (int o=0; o<10; o++) {

t=255;

OCR1A = t;

PORTC = (1<<PC0)|(0<<PC1);

_delay_ms(2000);

PORTC = (0<<PC0)|(1<<PC1);

_delay_ms(2000);

}

// здесь нужно набрать воды в барабан для полоскания, определитесь как будите набарать воду, если при помощи того же мотора, каким выкачивали воду, то нужно добаить один фрагмент:
//PORTC = (0<<PC2)|(1<<PC3);

//_delay_ms(10000); // регулируя это значение можно изменять время работы насоса для откачки воды

//PORTC = (1<<PC2)|(0<<PC3);

for (int p=0; p<16; p++) {

t=255;

OCR1A = t;

PORTC = (1<<PC0)|(0<<PC1);

_delay_ms(2000);

PORTC = (0<<PC0)|(1<<PC1);

_delay_ms(2000);

}

for (int k=0; k<10; k++) {

t=255;

OCR1A = t;

PORTC = (1<<PC0)|(0<<PC1)|(1<<PC2)|(0<<PC3);

_delay_ms(2000);

PORTC = (0<<PC0)|(1<<PC1);

_delay_ms(2000);

}

PORTC = 0x00;

}

else {

PORTC = 0x00;

}


}

}
 
 Top
Страниц (5): « 1 2 3 4 [5]
« Программирование микроконтроллеров »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru