www.open-tager.ru https://open-tager.ru/forum/ |
|
Зарядно розрядное устройство на 32 канала https://open-tager.ru/forum/viewtopic.php?f=5&t=6378 |
Страница 1 из 4 |
Автор: | maksim [ 21 мар 2018, 00:27 ] |
Заголовок сообщения: | Re: Зарядно розрядное устройство на 32 канала |
У кого какие идеи есть ,как то автоматизировать этот процес??? |
Автор: | DiBor [ 21 мар 2018, 02:16 ] |
Заголовок сообщения: | Re: Зарядно розрядное устройство на 32 канала |
maksim писал(а): У кого какие идеи есть ,как то автоматизировать этот процес??? У меня вообще есть идея сделать беспроводную зарядку по такой схеме. Не надо не разъемов не проводов. Повесил повязки на спец вешалку зарядку и расставил тагеры в пирамиде с зарядкой. https://youtu.be/cdPR_oibNGo?t=20 |
Автор: | Pacifist [ 21 мар 2018, 11:37 ] |
Заголовок сообщения: | Re: Зарядно розрядное устройство на 32 канала |
maksim писал(а): Вопрос как сделать этот переклчатель вольтметра на транзисторах а не на релюшках???? смотрите на аналоговые мультиплексоры. Например https://arduino.ua/prod1307-analogovii-kommytator-16h1-na-cd74hc4067 |
Автор: | maksim [ 22 мар 2018, 14:23 ] |
Заголовок сообщения: | Re: Зарядно розрядное устройство на 32 канала |
Запустил на ардуинке пример подключения мюльтиплексор)))Работает все))) https://www.youtube.com/watch?v=TTdOkhqLSr4 |
Автор: | maksim [ 22 мар 2018, 14:23 ] |
Заголовок сообщения: | Re: Зарядно розрядное устройство на 32 канала |
#define EN 3 #define S0 4 #define S1 5 #define S2 6 #define S3 7 #define SIG A0 void setup(){ Serial.begin(9600); pinMode(S0, OUTPUT); pinMode(S1, OUTPUT); pinMode(S2, OUTPUT); pinMode(S3, OUTPUT); digitalWrite(S0, LOW); digitalWrite(S1, LOW); digitalWrite(S2, LOW); digitalWrite(S3, LOW); pinMode(EN, OUTPUT); digitalWrite(EN, LOW); } void loop(){ //Loop through and read all 16 values //Reports back Value at channel 6 is: 346 for(int i = 0; i < 16; i ++){ // Serial.print("Value at channel "); // Serial.print(i); // Serial.print(": "); Serial.print(readMux(i)); Serial.print(". "); } Serial.println(); delay(1000); } int readMux(int channel){ int controlPin[] = {S0, S1, S2, S3}; int muxChannel[16][4]={ {0,0,0,0}, //channel 0 {1,0,0,0}, //channel 1 {0,1,0,0}, //channel 2 {1,1,0,0}, //channel 3 {0,0,1,0}, //channel 4 {1,0,1,0}, //channel 5 {0,1,1,0}, //channel 6 {1,1,1,0}, //channel 7 {0,0,0,1}, //channel 8 {1,0,0,1}, //channel 9 {0,1,0,1}, //channel 10 {1,1,0,1}, //channel 11 {0,0,1,1}, //channel 12 {1,0,1,1}, //channel 13 {0,1,1,1}, //channel 14 {1,1,1,1} //channel 15 }; //loop through the 4 sig for(int i = 0; i < 4; i ++){ digitalWrite(controlPin[i], muxChannel[channel][i]); } //read the value at the SIG pin int val = analogRead(SIG); //return the value return val; } |
Автор: | maksim [ 22 мар 2018, 14:28 ] |
Заголовок сообщения: | Re: Зарядно розрядное устройство на 32 канала |
Помогите подправить код )) 1) Как преобразовать числа в вольты?? 2)Как добавить еще один мультиплексор и сделать 32 вх ?? 3)Сделать сигнализацию ,чтобы как только на одном из входов напряжение упало до 3.6 в ,заорелся светодиодик ....?? |
Автор: | Pacifist [ 22 мар 2018, 15:01 ] |
Заголовок сообщения: | Re: Зарядно розрядное устройство на 32 канала |
1) Числа в вольты преобразуются просто: V = Х * Vref / ADCmax где Vref - опорное напряжение для АЦП. ADCmax - максимальное значение АЦП. На примере: допустим вы используете в качестве положительного опорного напряжения АЦП напряжение питания +5В, при этом АЦП имеет 10 разрядов, то есть максимальное его значение 1023. Тогда формула будет V = X * 5 / 1023. 2) Используйте выводы ЕN для разрешения работы конкретного мультиплексора. Но почитайте в даташите отключают ли они выходной канал когда микросхема не активна. Или заведите с каждого мультиплексора выход на отдельный канал АЦП. Получится простой опрос - задали адрес - измерили сначала от одного мультиплексора значение, потом от другого. 3) Надо не только светодиодик, но и нагрузку отключать. |
Автор: | maksim [ 22 мар 2018, 15:39 ] |
Заголовок сообщения: | Re: Зарядно розрядное устройство на 32 канала |
Заменил int val = analogRead(SIG); на int val = analogRead(SIG)* 5 / 1024; Преобразовало в вольты но не показывает после запятой значения )))Что нужно подправить чтобы показало напряжение в формате 3.75.....??? |
Автор: | Pacifist [ 22 мар 2018, 16:50 ] |
Заголовок сообщения: | Re: Зарядно розрядное устройство на 32 канала |
maksim писал(а): Заменил int val = analogRead(SIG); на int val = analogRead(SIG)* 5 / 1024; Преобразовало в вольты но не показывает после запятой значения )))Что нужно подправить чтобы показало напряжение в формате 3.75.....??? Умножить не на 5 а на 5000 - получите значение в милливольтах Только смотрите какого размера int в вашей ардуине. А где ставить точку при выводе на экран - это уже сами придумайте |
Страница 1 из 4 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |