| 
				
				устройство для измерения силы удара.
				 | 
				
			  | 
| 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   }   }
 
 
  
 |  
 
 |   | 
  |    |