| устройство для измерения силы удара. | 
| 
				
			 | 
| 
| podvoynuy | Дата: Понедельник, 20.01.2014, 20:00 | Сообщение # 1 |  | Группа: Пользователи Сообщений: 3 
 Статус: Offline | Здравствуйте все форумчане! Май нейм ис Николай.  Я только начал заниматься МК и увлекся. Хочу собрать устройство для измерения силы удара. Принцип действия в моем понимании: Сигнал от датчика в милливольтах через усилитель идет на ножку МК а именно к АЦП. После преобразования сигнала в аналоговый, значеня сохраняется на подключенную флешку (не знаю хватит ли встроенной памяти МК...  поэтому наверняка буду подключать флешку). Устройство в корпусе из стеклопластика см.. фото. Проблема № 1 как подключить к одному входу в АЦП шесть датчиков? Именно столько нужно их. Пока выкладываю фото, но буду дополнять инфой.
 
 буду благодарен за комментарии и критику!
 
 
 
 
 Сообщение отредактировал podvoynuy - Понедельник, 20.01.2014, 20:15 |  
 |  |  |  | 
| 
| Петр | Дата: Понедельник, 20.01.2014, 20:31 | Сообщение # 2 |  | Группа: Проверенные Сообщений: 47 
 Статус: Offline | У МК обычно больше одного входа АЦП и модель с б и 6ольшим числом входов не сложно найти. Тот же ATmega8. 
 
 |  
 |  |  |  | 
| 
| Aleks8383 | Дата: Понедельник, 20.01.2014, 20:32 | Сообщение # 3 |  | Группа: Проверенные Сообщений: 102 
 Статус: Offline | А зачем именно к одному входу АЦП,возьмите самую распространённкую атмегу 8 у неё как раз 6 входов ацп,да и измеряйте на здоровье,а если мега 8 в СМД корпусе так там вообще 8 входов АЦП.А что за датчики будут,тензорезисторы какие небудьили что небудь цифровое? Петр уже ответил,опередил.
 
 
 
 
 Сообщение отредактировал Aleks8383 - Понедельник, 20.01.2014, 20:32 |  
 |  |  |  | 
| 
| kip96 | Дата: Понедельник, 20.01.2014, 23:11 | Сообщение # 4 |  | Группа: Свой человек Сообщений: 170 
 Статус: Offline | Блин, ну только сегодня такая идея возникла! Ну вот, говорят мысли блуждают, а не приходят. Вообщем у меня несколько другая идея. Использовать акселерометр. Т.к.  у меня груша (которую нельзя скушать)
  , засунуть в неё Акселерометр. Зная вес груши, и ускорение, которое мы ей придадим, можно вычислить силу удара. Осталось формулу найти.;) 
 
 |  
 |  |  |  | 
| 
| podvoynuy | Дата: Понедельник, 20.01.2014, 23:12 | Сообщение # 5 |  | Группа: Пользователи Сообщений: 3 
 Статус: Offline | Петр, Aleks8383,  спасибо что ткнули носом!) Я неправильно понял литературу, которая у меня есть. Насколько я теперь уже выяснил- ножки подсоединенные к АЦП это група "с"?  Наверно в качестве датчиков будут тензорезистивные или пьезоэлектрические. 
 
 |  
 |  |  |  | 
| 
| exersizze | Дата: Понедельник, 20.01.2014, 23:31 | Сообщение # 6 |  |   Группа: Администраторы Сообщений: 720 
 Статус: Offline |   
 в случае с ATMega8, да порты С.
 акселерометр будет здесь кстати думаю.
 kip96, ускорение на массу по второму закону и будет сила ;)
 
 
 |  
 |  |  |  | 
| 
| kip96 | Дата: Вторник, 21.01.2014, 00:18 | Сообщение # 7 |  | Группа: Свой человек Сообщений: 170 
 Статус: Offline | Ну да. Я про формулу, которая из показаний акселерометра (MMA7361)  ускорение выводит. Прикупил такой для управления радиомоделью. Но думаю какой-нить цифровой прикупить.
 
 
 |  
 |  |  |  | 
| 
| podvoynuy | Дата: Пятница, 14.03.2014, 22:51 | Сообщение # 8 |  | Группа: Пользователи Сообщений: 3 
 Статус: Offline | Добрый вечер. Вот некоторые наработки в моем устройстве ... Все лепил по материалам:http://www.doneathome.ru/archives/497 http://www.gaw.ru/html.cgi/txt/app/Atmel/memory/at45_to_avr.htm
 Сделал схемку. Вопрос будет ли работать?
 Ну и сам код прошивки далее. Жду советов и критики господа.
 //  от источника:  http://www.doneathome.ru/#/archives/497
 // -Wl,-u,vfprintf -lprintf_flt -lm (подключение дробных
 чисел)
 
 #define F_CPU 1000000UL
 #include <avr/io.h>
 #include <util/delay.h>
 #include <stdio.h>
 void init_adc() //-ініціалізація АЦП
 {
 ADMUX = 0b01000000; //выбираем источник питания АЦП
 ADCSRA|=(1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);// устанавливаем предделитель
 ADCSRA|=(1 << ADEN);// Включаем АЦП
 }
 // Функция запуска преобразования АЦП и чтения результата
 unsigned int read_adc(unsigned char adc_input)
 {
 ADMUX|=0x0E&adc_input; //определяем на какой ножке измеряем V
 _delay_us(10); // Задержка на установление опорного напряжения
 ADCSRA |= (1 << ADSC); // Запуск преобразования АЦП
 while ((ADCSRA & (1 << ADIF))==0);// Ожидание окончания преобразования
 return ADCW;
 }
 int main(void)
 {
 init_adc();// инициализируем АЦП
 }
 //  от источника: (http://www.gaw.ru/html.cgi/txt/app/Atmel/memory/soft.htm)
 write_to_flash(ADC-0x1D5);
 // чтение данных, преобразование 8 бит и
 сохранение во флэш
 
 void write_to_flash(unsigned char
 flash_data) //запис на
 флеш
 {
 static unsigned int buffer_counter;
 static unsigned int page_counter;
 unsigned
 char temp = 0x80;
 
 if((ACSR
 & 0x02)) // если флаг установлен, то новые данные должны быть
 установлены
 {
 buffer_counter
 = 0;
 page_counter
 = 0;   // сброс счётчика если должны бытьзаписаны
 новые данные
 ACSR
 &= 0xFD; // очистка флага сигнала
 }
 
 while(!(PINB
 & 0x02));         // проверказанятости флэша
 
 PORTB &= ~DF_CHIP_SELECT;      // включение DataFlash
 
 SPDR
 = BUFFER_1_WRITE;
 while
 (!(SPSR & temp));        // ожиданиезавершения передачи
 SPDR
 = 0x00;                   // не важно
 while
 (!(SPSR & temp));        // ожиданиезавершения передачи
 
 SPDR
 = (char)(buffer_counter>>8); // не важно + первые два бита буфера
 адреса
 while
 (!(SPSR & temp));                // ожидание завершения передачи
 
 SPDR = (char)buffer_counter;    // буфер адреса (макс. 2^8= 256
 страниц)
 while
 (!(SPSR & temp));                // ожидание завершения передачи
 SPDR
 = flash_data;             // запись данныхв регистр данных SPI
 while
 (!(SPSR & temp));        // ожиданиезавершения передачи
 
 
 PORTB |= DF_CHIP_SELECT;       // выключение DataFlash
 
 buffer_counter++;
 
 if (buffer_counter > 528)      // если буфер заполнен, то его
 содержимое записывается в страницупамяти
 {
 buffer_counter = 0;
 if (page_counter
 < 4096) // если память не заполнена
 {
 PORTB &= ~DF_CHIP_SELECT;      // включить DataFlash
 
 SPDR =
 B1_TO_MM_PAGE_PROG_WITHOUT_ERASE; // записать
 данные
 из буфера 1 в страницу
 while
 (!(SPSR & temp));        // ожиданиезавершения
 передачи
 SPDR =
 (char)(page_counter>>6);
 while
 (!(SPSR & temp));        // ожиданиезавершения
 передачи
 SPDR =
 (char)(page_counter<<2);
 while (!(SPSR & temp));        // ожидание завершения
 передачи
 SPDR
 = 0x00;                   // не важно
 while
 (!(SPSR & temp));        // ожиданиезавершения
 передачи
 
 PORTB
 |= DF_CHIP_SELECT;       // выключение DataFlash
 
 page_counter++;
 }
 else
 }
 }
 
 
 |  
 |  |  |  |