-
17.05.2017, 10:33 #1
- Регистрация
- 31.10.2016
- Возраст
- 30
- Сообщений
- 2
- Поблагодарили
- 0
- Поблагодарил
- 0
Нужна помощь по дипломной работе
Доброго времени суток! Мне нужно рассчитать схему транзисторного ключа на полевом транзисторе помогите пожалуйста студенту-выпускнику
Также нужно построить алгоритм работы по готовому скетчу двух микроконтроллеров
1 микроконтролллер:
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
RF24 radio(9, 10); // "создать" модуль на пинах 9 и 10 Для Уно
//RF24 radio(9,53); // для Меги
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб
byte button = 3; // кнопка на 3 цифровом
byte potent = 0; // потенциометр на 0 аналоговом
byte slider = 1; // движковый потенциометр на 1 аналоговом пине
byte transmit_data[3]; // массив, хранящий передаваемые данные
byte latest_data[3]; // массив, хранящий последние переданные данные
boolean flag; // флажок отправки данных
void setup() {
Serial.begin(9600); //открываем порт для связи с ПК
pinMode(button, INPUT_PULLUP); // настроить пин кнопки
radio.begin(); //активировать модуль
radio.setAutoAck(1); //режим подтверждения приёма, 1 вкл 0 выкл
radio.setRetries(0, 15); //(время между попыткой достучаться, число попыток)
radio.enableAckPayload(); //разрешить отсылку данных в ответ на входящий сигнал
radio.setPayloadSize(32); //размер пакета, в байтах
radio.openWritingPipe(address[0]); //мы - труба 0, открываем канал для передачи данных
radio.setChannel(0x60); //выбираем канал (в котором нет шумов!)
radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
radio.setDataRate (RF24_250KBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
//должна быть одинакова на приёмнике и передатчике!
//при самой низкой скорости имеем самую высокую чувствительность и дальность!!
radio.powerUp(); //начать работу
radio.stopListening(); //не слушаем радиоэфир, мы передатчик
}
void loop() {
transmit_data[0] = !digitalRead(button); // инвертированный (!) сигнал с кнопки
transmit_data[1] = map(analogRead(potent), 0, 1023, 0, 180); // получить значение
// в диапазоне 0..1023, перевести в 0..180, и записать на 1 место в массиве
transmit_data[2] = map(analogRead(slider), 0, 1023, 0, 255);
for (int i = 0; i < 3; i++) { // в цикле от 0 до числа каналов
if (transmit_data[i] != latest_data[i]) { // если есть изменения в transmit_data
flag = 1; // поднять флаг отправки по радио
latest_data[i] = transmit_data[i]; // запомнить последнее изменение
}
}
if (flag == 1) {
radio.powerUp(); // включить передатчик
radio.write(&transmit_data, sizeof(transmit_data)); // отправить по радио
flag = 0; //опустить флаг
radio.powerDown(); // выключить передатчик
}
}
2 микроконтроллер:
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include <Servo.h>
RF24 radio(9, 10); // "создать" модуль на пинах 9 и 10 Для Уно
//RF24 radio(9,53); // для Меги
byte recieved_data[3]; // массив принятых данных
byte relay = 2; // реле на 2 цифровом
byte servo = 3; // сервопривод на 3 цифровом
byte mosfet = 5; // мосфет на 5 цифровом (ТУТ ЕСТЬ ШИМ!!!)
Servo myservo;
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб
void setup() {
Serial.begin(9600); //открываем порт для связи с ПК
pinMode(relay, OUTPUT); // настроить пин реле как выход
pinMode(mosfet, OUTPUT); // настроить пин мосфета как выход
myservo.attach(servo);
radio.begin(); //активировать модуль
radio.setAutoAck(1); //режим подтверждения приёма, 1 вкл 0 выкл
radio.setRetries(0, 15); //(время между попыткой достучаться, число попыток)
radio.enableAckPayload(); //разрешить отсылку данных в ответ на входящий сигнал
radio.setPayloadSize(32); //размер пакета, в байтах
radio.openReadingPipe(1, address[0]); //хотим слушать трубу 0
radio.setChannel(0x60); //выбираем канал (в котором нет шумов!)
radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
radio.setDataRate (RF24_250KBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
//должна быть одинакова на приёмнике и передатчике!
//при самой низкой скорости имеем самую высокую чувствительность и дальность!!
radio.powerUp(); //начать работу
radio.startListening(); //начинаем слушать эфир, мы приёмный модуль
}
void loop() {
byte pipeNo;
while ( radio.available(&pipeNo)) { // слушаем эфир со всех труб
radio.read( &recieved_data, sizeof(recieved_data) ); // чиатем входящий сигнал
digitalWrite(relay, recieved_data[0]); // подать на реле сигнал с 0 места массива
//то бишь 0 или 1
myservo.write(recieved_data[1]); // повернуть серво на угол 0..180
// значение получено с 1 элемента массива
analogWrite(mosfet, recieved_data[2]); // подать на мосфет ШИМ сигнал
// в соответствии с принятыми данными со 2 места массива, диапазон 0...255
}
}
-
17.05.2017, 10:58 #2
- Регистрация
- 07.12.2011
- Адрес
- Кустанай
- Возраст
- 58
- Сообщений
- 2,307
- Поблагодарили
- 4023
- Поблагодарил
- 1185
-
17.05.2017, 11:23 #3
- Регистрация
- 21.06.2010
- Адрес
- г.Волжский Волгоградской обл
- Возраст
- 72
- Сообщений
- 5,351
- Поблагодарили
- 1863
- Поблагодарил
- 5630
"...Тётенька дайте попить, а то так есть хочется, что аж переночевать негде..." Возможно, и Ваш препод тоже на форуме бывает...
UC4A, Владимир
-
17.05.2017, 11:53 #4
- Регистрация
- 20.09.2013
- Адрес
- Комсомольск-на-Амуре
- Возраст
- 57
- Сообщений
- 7,133
- Поблагодарили
- 9204
- Поблагодарил
- 6565
Доброго времени суток! Мне нужно рассчитать схему транзисторного ключа на полевом транзисторе помогите пожалуйста студенту-выпускнику
Печально.Господь подарил нам Cэмюэля МОРЗЕ, лентяи SSB, а черти подарили нам (вернее вам) FT8.Олег UA0CID 73!
-
17.05.2017, 12:09 #5
- Регистрация
- 02.02.2016
- Возраст
- 35
- Сообщений
- 44
- Поблагодарили
- 12
- Поблагодарил
- 7
-
17.05.2017, 12:16 #6
Прошлый раз сдал курсовую
http://forum.qrz.ru/22-okolo-r-l-bes...troystvam.html
|
Социальные закладки