极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16083|回复: 9

求助帖

[复制链接]
发表于 2017-11-2 15:05:04 | 显示全部楼层 |阅读模式
各位大神,小弟现在想要用arduino uno实现以1000Hz的频率采集0-5V的电压模拟量,怎么样才能保证采样频率的精确度啊?
回复

使用道具 举报

发表于 2017-11-3 12:00:05 | 显示全部楼层
本帖最后由 275891381 于 2017-11-3 12:01 编辑

定时吧,定时器中断内采集,你用MsTimer2.rar 库,翻转下io看看精度能达到多高,满足的话,就可以
回复 支持 反对

使用道具 举报

发表于 2017-11-3 12:34:37 | 显示全部楼层
1K的ADC很低的,uno自带的ADC足够
回复 支持 反对

使用道具 举报

发表于 2017-11-3 13:30:36 | 显示全部楼层
//下面定时1ms。晶振可能不准,实际定时是1.010ms
#include <avr/io.h>
#include <avr/interrupt.h>

#define LEDPIN 13
u8 flag=0;
void setup()
{
    pinMode(LEDPIN, OUTPUT);
    cli();
    TCCR1A=0;
    TCCR1B=(1<<CS20);//寄存器B是配置定时功能的,现在配置的是不分频
    TCNT1=49535; //计数器初值
    //不分频16m,1s计数16000000次 1ms计数16000次  TCNT1= 0XFFFF -16000= 49535
    TIMSK1=(1<<TOIE1); //溢出中断使能
    sei(); //开全局中断
}
ISR(TIMER1_OVF_vect)
{
    TCNT1=49535;
    flag=!flag;
    digitalWrite(LEDPIN,flag);
}

void loop()
{
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-3 14:58:12 | 显示全部楼层
谢谢!还有一个问题,由于serial print这个函数运行需要的时间较长,导致采集到的数据打印到串口之后会有丢失,怎么样才能把数据全部保存下来?
回复 支持 反对

使用道具 举报

发表于 2017-11-3 15:19:57 | 显示全部楼层
18844069725 发表于 2017-11-3 14:58
谢谢!还有一个问题,由于serial print这个函数运行需要的时间较长,导致采集到的数据打印到串口之后会有丢 ...

print后面+Serial.flush();
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-3 16:11:05 | 显示全部楼层
我试了以下还是没有改善啊,按照一秒1000个数来说,从串口保存下来的只有不到300个数
回复 支持 反对

使用道具 举报

发表于 2017-11-3 19:21:21 | 显示全部楼层
18844069725 发表于 2017-11-3 14:58
谢谢!还有一个问题,由于serial print这个函数运行需要的时间较长,导致采集到的数据打印到串口之后会有丢 ...

干嘛要从串口输出里保存? 不明白你把数据输出到串口的目的.

声明2个大数组做缓存. 达到一定长度了存到SD卡.(这个时候用另外一个数组存取采集的数据). 存完SD卡了清空这个数组. 如此交替.

最后采集完了,把SD的数据输出到串口.
回复 支持 反对

使用道具 举报

发表于 2017-11-3 23:05:11 | 显示全部楼层
用定时器和乒乓缓存来做~也就是声明两个大数组,轮流存数,发数,串口波特率设置高一点点,115200应该可以了~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-4 08:28:34 | 显示全部楼层
Stormer 发表于 2017-11-3 19:21
干嘛要从串口输出里保存? 不明白你把数据输出到串口的目的.

声明2个大数组做缓存. 达到一定长度了存 ...

谢谢!如果能给一个类似程序的链接的话就更好了,arduino新手一个,还在各种学习中
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-8 22:57 , Processed in 0.041811 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表