Ви не увійшли.
термопреобразователь ? IP68 ? 0ExiaIICT6? могу сделать в любом классе, включая вторичный эталон, давайте ТЗ )
правда это будет очень дорого и не быстро )
давайте не будем демагогию разводить,
поищите в сети примеры.
первая строка в гугле
http://edurobots.ru/2014/04/arduino-servoprivod/
я ведь тоже не юное создание, помочь сделать цяцьку - помогу )
вместо Вас делать не буду,
выбор за Вами )
Неактивний
[add] сборная солянка возможна, но к Вам теперь будет особое отношение ) как работает серва вы знаете ) итого - буду просить видео что получилось , а что не получается,
таки Вы сами сделаете project )
поехали?
давайте свою солянку и правильный вопрос )
[add] видео это не праздный вопрос, у меня нет ни самой простой Arduino платки , даже простенького Atmel нигде не завалялось, да и сервы нету )))
вру, Атмел есть в вытяжке, но звыняйте снимать его оттудова не буду )
Остання редакція NoName (2016-02-02 15:51:10)
Неактивний
Ну хорошо. Что я должен сделать, чтобы Вы смогли помочь ? Написать свой скетч ? Так в том то и дело, что я не умею его написать. Если бы я хоть что- нибудь смыслил в этом, я бы уже это сделал. Ну и как мне теперь воспользоваться Вашей помощью ? Линк этот я уже смотрел и даже скетч этот, пробовал загрузить в Arduino, только, не получилось ничего...
Может, Вы какой- нибудь шаблон дадите, а я попытаюсь по нему написать что- то, чтобы Вы уже по реальной писанине могли помогать ?
Неактивний
Хорошо. Попытаюсь сейчас набросать эскиз.
Ой, прошу прощения, про видео только сейчас увидел. А вот это, на вряд ли, нет у меня камеры... А в чём тайный смысл, видео ?
Остання редакція mat (2016-02-02 16:47:40)
Неактивний
mat, доброе утро
Маэстро улетел по делам к Макарычу, будет не скоро.
"Честно скажу, есть у меня кое- какие успехи, в программировании Arduino но, они такие неуклюжие и глючные, что я их даже перестал показывать. Стыдно просто." (с)mat
скажу честно - не морочьте котикам голову.
закажите разработку и не стесняйтесь в расходах.
Неактивний
Доброе утро.
Я дочь миллионера не топчу, чтобы последовать Вашему совету, заказать. И сам не работаю, пока на пособие живу, жду пенсию. Да и, ваши коллеги, а они все сплошь и рядом из молодых, тех свойств, которыми обладаем мы, старики, не имеют. И если к ним обратиться, с заказом естественно, раздуют из этой безделицы такой шум, начиная с ТЗ, составления смет и графиков и заканчивая отладочно- доводочными работами на объекте. Как говорится, всё знают но, ничего не умеют.
Если я правильно понял, от Вас не только помощи но и совета, я не дождусь ? И даже примерную стоимость такой программы Вы не скажете ?
Неактивний
mat, боюсь Вы правы,
эти часики посмотрю к лету
https://www.youtube.com/watch?time_cont … WHF-bm7wQ0
других вариантов кроме как использовать HDD не вижу, либо так себе качество, либо дорого, либо очень много возни.
успехов
советовать мы все мастаки, вариант один - повторите готовое устройство. пример у Вас есть
Неактивний
Мне ещё такой момент не понятен. Arduino 8 разрядная, а как это выглядит физически ? Каждый бит имеет свою ножку ? Например, я подал импульс на вход, а на разрядность мне нужно как- то ориентироваться ? Импульс вроде один, а битов 8... Не понятно.
Разрядность умного камня aka CPU или MCU заметна, прежде всего, в разрядности его регистров общего назначения, в т.ч. самого популярного регистра - аккумулятора. Естественно, что арифметико-логическое устройство заточено под ту же самую разрядность (но может использовать два регистра результата для операций типа умножения, потому что иначе результат девать некуда будет).
На что это влияет? Например, порты ввода-вывода такой же ширины, при том что эти порты у микроконтроллера из Ардуино занимают большую часть ножек. А ещё на скорость обработки целочисленных данных, так как за одну арифметическую операцию размер числа ограничен количеством бит машинного слова. Не проблема обработать "длинное" число за пару проходов, но это же время. Ещё малая разрядность отражается в малой разрядности различных шин, адресуемой памяти. Представьте себе только, как рассчитать указатель, используя 8-битный регистр, если у вас данные хранятся по адресу около 1 мегабайта - это три захода при прямой адресации, что, конечно, немного обходится регистрами сегментов памяти, но это уже совсем другая сказка.
Все входы одного порта можно за раз (за операцию) читать-писать. Да, каждый бит там имеет свою ножку. Но можно обращаться выборочно к отдельным ножкам.
Неактивний
Спасибо большое, хоть что- то уже понятнее стало. А такой вопрос, если я правильно понял, для сигналов Enable, Step и Dir я могу использовать три ножки одного порта, то бишь три бита. А влияет ли как- то порядок этих битов или старшинство, или как там правильно называется очерёдность этих битов в байте ? Другими словами, как это отражается в записи программы ? И остальные 5 ножек - битов, я могу использовать для других целей скажем, резервировать ? Почему интересуюсь ? Я тут, пока осваивал эту премудрость, похоже, один выход спалил или подпалил на своей Arduino. Сейчас сигнал, как бы трёхуровневый, на осциллографе смотрю. Даже сигналы с энкодера, когда в воздухе, сигнал нормальный, два уровня 0 и 1, подключаю к выводам Arduino сигнал становится уже с тремя уровнями. Вот и подумал, на другую ножку можно его перевести ? И как ?
Неактивний
Ножки для вывода можно использовать какие угодно, но некоторые -- ценный ресурс, так как они умеют считывать аналоговый сигнал, могут выдавать PWM, способны вызывать программные прерывания в ответ на изменения входного сигнала, а на некоторых из них выведены аппаратные интерфейсы для связи, в т.ч. запаянные в сторону компьютера.
Неактивний
Я наверное не очень понятно написал... У меня на Arduino Mega 2560 для ввода сигналов Step и Dir были задействованы 20 и 21 выводы. Номера даю по плате Arduino. Похоже что, пока экспериментировал, один вход подпалил, кажется 20. Вот я и подумал, если порт это 8 бит т. е. 8 ножек, может быть можно перенести на другую ножку, чтобы через неё подать сигнал ? Сам пока не могу разобраться, там всё по- намешано... Не подскажите ? Или другую покупать ? Хотя, я уже заказал новую...
Остання редакція mat (2016-02-03 23:45:04)
Неактивний
Да у этой Меги ножек хоть отбавляй https://arduino-info.wikispaces.com/MegaQuickRef
Можно попробовать заменить, например, на 22-ую. Для этого надо также заменить в программе 20 на 22 (там, где это относится к подгоревшей ножке).
Неактивний
Подскажите пожалуйста, где ошибка ? Набрал такой текст
#include <avr/pgmspace.h>
/////////////////////////////////////////////////////////
// ***** Параметры *****
#define Motor_X_Step_Per_Rev 500 // Кол-во шагов/об, мотор 1
#define Motor_Y_Step_Per_Rev 500 // Кол-во шагов/об, мотор 2
#define Enc_Line_per_Rev 500 // Кол-во линий энкодера
// ***** Motor *****
#define MotorPort PORTD
#define MotorInitialization() DDRD=B11111111
#define Motor_X_SetPulse() MotorPort &= ~(1<<0)
#define Motor_X_RemovePulse() MotorPort |= (1<<0)
#define Motor_X_InvertPulse() MotorPort ^= (1<<0)
#define Motor_Y_SetPulse() MotorPort &= ~(1<<1)
#define Motor_Y_RemovePulse() MotorPort |= (1<<1)
#define Motor_Y_InvertPulse() MotorPort ^= (1<<1)
#define Motor_X_CW() MotorPort &= ~(1<<2)
#define Motor_X_CCW() MotorPort |= (1<<2)
boolean Motor_X_CW_flag = true;
#define Motor_Y_CW() MotorPort |= (1<<3)
#define Motor_Y_CCW() MotorPort &= ~(1<<3)
boolean Motor_Y_CW_flag = true;
#define Motor_X_Enable() MotorPort |= (1<<4)
#define Motor_X_Disable() MotorPort &= ~(1<<4)
#define Motor_Y_Enable() MotorPort |= (1<<5)
#define Motor_Y_Disable() MotorPort &= ~(1<<5)
boolean Step_On_flag = false;
boolean X_Feed_flag = false;
boolean Y_Feed_flag = false;
// ***** Encoder *****
#define Enc_Tick Enc_Line_per_Rev*2
#define EncoderPort PORTD
#define EncoderInitialization() DDRD=B00000000;\
PORTD = B00001111
#define Enc_Read (PIND & B00000010)
volatile int Enc_Pos = 0;
volatile byte Ks_Count = 0;
volatile int Km_Count = 0;
byte Ks_Divisor = 0;
int Km_Divisor = 0;
int Enc_Pos_tmp = 0;
long Spindle_Angle = 0;
#define Spindle_Direction_CW 0
#define Spindle_Direction_CCW 1
boolean Spindle_Direction = Spindle_Direction_CW;
и после компиляции получаю
core.a(main.cpp.o): In function `main':
C:\Users\Андрей\Desktop\Arduino\arduino-1.0.2-windows\hardware\arduino\cores\arduino/main.cpp:11: undefined reference to `setup'
C:\Users\Андрей\Desktop\Arduino\arduino-1.0.2-windows\hardware\arduino\cores\arduino/main.cpp:14: undefined reference to `loop'
На сколько у меня ума хватает, я до этого ещё даже не дошёл... Или, нужно просто набирать текст программы полностью, с этими setup и loop ?
Остання редакція mat (2016-02-05 07:55:22)
Неактивний
Вот тут написано, как писать на Arduino на чистом C: https://habrahabr.ru/post/247663/
А ещё там есть комменатрий после статьи, что "внутри" Ардуино на самом деле есть прослойка, которая вызывает ваш скетч:
int main(void)
{
init();
setup();
for (;;)
loop();
return 0;
}
Вот она-то и ожидает от вашей программы наличия минимума из двух подпрограмм https://www.arduino.cc/en/Tutorial/BareMinimum:
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
Неактивний
Я чувствую себя настоящим профи от программирования !!! С большим интересом прочитал монологи зубров, о разных способах решения одной и той же задачи. Вот, только не понял, на фига ?
Пойду, попытаюсь ещё натаскать фрагментов кода, для setup и loop. Наверное, скоро вернусь.
Неактивний
#include <avr/pgmspace.h>
/////////////////////////////////////////////////////////
// ***** Параметры *****
#define Motor_X_Step_Per_Rev 500 // Кол-во шагов/об, мотор 1
#define Motor_Y_Step_Per_Rev 500 // Кол-во шагов/об, мотор 2
#define Enc_Line_per_Rev 500 // Кол-во линий энкодера
// ***** Motor *****
#define MotorPort PORTD
#define MotorInitialization() DDRD=B11111111
#define Motor_X_SetPulse() MotorPort &= ~(1<<0)
#define Motor_X_RemovePulse() MotorPort |= (1<<0)
#define Motor_X_InvertPulse() MotorPort ^= (1<<0)
#define Motor_Y_SetPulse() MotorPort &= ~(1<<1)
#define Motor_Y_RemovePulse() MotorPort |= (1<<1)
#define Motor_Y_InvertPulse() MotorPort ^= (1<<1)
#define Motor_X_CW() MotorPort &= ~(1<<2)
#define Motor_X_CCW() MotorPort |= (1<<2)
boolean Motor_X_CW_flag = true;
#define Motor_Y_CW() MotorPort |= (1<<3)
#define Motor_Y_CCW() MotorPort &= ~(1<<3)
boolean Motor_Y_CW_flag = true;
#define Motor_X_Enable() MotorPort |= (1<<4)
#define Motor_X_Disable() MotorPort &= ~(1<<4)
#define Motor_Y_Enable() MotorPort |= (1<<5)
#define Motor_Y_Disable() MotorPort &= ~(1<<5)
boolean Step_On_flag = false;
boolean X_Feed_flag = false;
boolean Y_Feed_flag = false;
// ***** Encoder *****
#define Enc_Tick Enc_Line_per_Rev*2
#define EncoderPort PORTD
#define EncoderInitialization() DDRD=B00000000;\
PORTD = B00001111
#define Enc_Read (PIND & B00000010)
volatile int Enc_Pos = 0;
volatile byte Ks_Count = 0;
volatile int Km_Count = 0;
byte Ks_Divisor = 0;
int Km_Divisor = 0;
int Enc_Pos_tmp = 0;
long Spindle_Angle = 0;
#define Spindle_Direction_CW 0
#define Spindle_Direction_CCW 1
boolean Spindle_Direction = Spindle_Direction_CW;
//////////////////////////////////////////////
void setup()
{
EncoderInitialization();
MotorInitialization();
}
//////////////////////////////////////////////
void loop()
{
Enc_Pos_tmp = Enc_Pos;
}
Компиляция не ругалась, выдала, сколько там байт. И чО ? Я уже программист что ли ? Можно загружать и запускать ? Хотя, сам не верю в успех, этого безнадёжного дела... Что скажете, уважаемые гуру ?
Неактивний
Вы не понимаете что вы делаете!
Если у вас шаговые двигатели, то предлагаю вам сначала собрать и воспроизвести какой-нибудь пример для них (для одного), а потом попробовать его изменить.
Пример примера: https://www.arduino.cc/en/Tutorial/StepperSpeedControl
Неактивний
Ребята, вы разговариваете не с коллегой, а сапожником. Да, конечно, я могу поменять прошивку на валенках но, это совсем не то, о чём вы подумали. Конечно же, всё, что я здесь привёл, это я тупо надёргал в инете фрагменты, немного переписал, чтобы было похоже на мои нужды но, от этого, я не стал лучше понимать, что я делаю. Поэтому и попросил, напишите пожалуйста для меня скетч, пусть он не совсем идеальный но, я хоть буду знать что, он РАБОЧИЙ и когда я уверен что это работает, я уже смогу что- то понимать.
Нет, двигатель у меня не шаговый, а серво. И не та серва, что поворачивает вал на ограниченный угол, а которая может крутить его без ограничений в любую сторону и с любой скоростью, включая и удержание в одном положении. Вот, честно копал интернет, в поисках похожего, не нашёл. Попадался чем- то похожий на мои нужды но, там было такое накручено что я просто отказался. Правда, начало оттуда украл. Каюсь.
Напишите пожалуйста, хоть кусочек, чтобы, вращая энкодер, двигатель вращался со скоростью скажем, в два раза ниже. Или выше, как вам будет удобнее.
Неактивний
https://www.arduino.cc/en/Tutorial/Knob
/*
Controlling a servo position using a potentiometer (variable resistor)
by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
modified on 8 Nov 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Knob
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
// val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}
http://playground.arduino.cc/Main/RotaryEncoders
уверен что найдете кто поможет собрать один проект из этих примеров
Остання редакція NoName (2016-02-09 11:58:31)
Неактивний